久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5018|回復: 1
打印 上一主題 下一主題
收起左側

2440裸機編程之四 外部中斷

[復制鏈接]
跳轉到指定樓層
樓主
ID:68618 發(fā)表于 2014-11-12 14:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

2440有60個中斷源(有的中斷源還有幾個子中斷源),中斷原理如下圖:


中斷源使中斷源請求寄存器(SRCPND)的相應位置一,中斷模式寄存器(INTMOD)選擇是IRQ還是FIQ模式,如果是IRQ,在中斷屏蔽寄存器(INTMSK)不屏蔽的情況下,會產生中斷,同時中斷請求寄存器(INTPND)的相應位被置一。

2440 外部中斷 編程步驟:
外部中斷初始化()
{
引腳初始化: 設置相應引腳為外部中斷功能 GPxCON
  選擇相應觸發(fā)模式    EXTINT
中斷初始化: 清除SRCPNF、INTPND中的相應中斷標志位
  中斷例程地址 -> 中斷向量表 pISR_EINTx
  使能相應中斷 rINTMSK
}

中斷例程()  __irq
{
  ……中斷程序……
  清除SRCPNF(先)、INTPND(后)中的相應中斷標志位
}

這是一個外部中斷0的實驗程序(GPF0作外部中斷源):
//********************************************************************
void Main(void)
{     
    int i;
    ……硬件初始化……

Eint0_init();
while(1);
}
void  Eint0_init(void)  //EINT0初始化
{
Uart_Printf("\n外部中斷實驗:Eint0\n");
rGPFCON = rGPFCON & ~7 |  2  ; //設置GPF0 為 外部中斷模式
rEXTINT0 = rEXTINT0 & ~7 | 2   ;//設置EINT0 為 下降沿觸發(fā)
rSRCPND = 1;     //SRCPND寫1清0
rINTPND = 1;     //INTPND寫1清0
pISR_EINT0 = (U32)Eint0_ISR; //向向量表申請中斷向量
rINTMSK = rINTMSK & ~(1);  //禁止EINT0的屏蔽
}

void   Eint0_ISR(void) __irq  //EINT0中斷例程
{
Uart_Printf("你按了一次Eint0引腳的按鍵\n");
rSRCPND = 1;  //清楚EINT0中斷標志
rINTPND = 1;
}
//*******************************************************************

運行結果如圖:



注意中斷標志的清除順序:SUBSRCPND(如果有)->SRCPND->INTPND  ,如果不這樣做,中斷例程結束后,還會再次引起額外的中斷
注意 pISR_EINT0 = (U32)Eint0_ISR;每一個中斷例程運行之前,都要把它的地址交給中斷向量表(此指60個中斷源的eboot中斷向量表,非地址0處的異常中斷向量表,IRQ發(fā)生時,PC先指向異常中斷向量表的IRQ位置,再跳轉到eboot中斷向量表),以在中斷發(fā)生時,正確進入相應的中斷例程,其實是把INTOFFSET中的中斷號轉換成(在eboot中斷向量表的)偏移地址。



外部中斷又24個,但不都是一致的,如下圖:

EINT0、EINT1、EINT2、EINT3是四個獨立的中斷源,而EINT4~7組成一個中斷源,EINT8~23組成一個中斷源。
那么EINT4~7的中斷程序如何寫,顯然不能用EINT0的方式,不然EINT4~EINT7的四個源相互之間無法被區(qū)分開,EINT8~23也同理。
所以為了區(qū)分它們,要用到EINTMASK和EINTPEND,EINTMASK每一位對應EINT4~EINT23的屏蔽,其他位保留;EINTPEND每一位對應EINT4~EINT23的中斷請求,其他位保留;這樣就可以順利區(qū)分EINT4~EINT23了。

下面是Eint2和Eint11的中斷程序
//********************************************************************
void Main(void)
{     
    int i;
    ……硬件初始化……

Uart_Printf("\n外部中斷實驗:Eint2 和 Eint8_23\n");
Eint2_init();
Eint8_23_init(); //EINT11初始化
while(1);
}
void  Eint2_init(void)  //EINT2初始化
{
rGPFCON = rGPFCON & ~3<<4 |  2<<4  ; //設置GPF2 為 外部中斷模式
rEXTINT0 = rEXTINT0 & ~7<<8 | 4<<8   ;//設置EINT2 為 上升沿觸發(fā)
rSRCPND = 1<<2;     //SRCPND寫1清0
rINTPND = 1<<2;     //INTPND寫1清0
pISR_EINT2 = (U32)Eint2_ISR;  //填入Eint2的中斷向量
rINTMSK = rINTMSK & ~(1<<2);  //禁止EINT2的屏蔽
}

void   Eint2_ISR(void) __irq  //EINT2中斷例程
{
Uart_Printf("你按了一次Eint2引腳的按鍵\n");
rSRCPND = 1<<2;  //清楚EINT2中斷標志
rINTPND = 1<<2;
}

void  Eint8_23_init(void)  //Eint8_23初始化
{
rGPGCON = rGPGCON & ~3<<6 |  2<<6  ; //設置GPG3 為 外部中斷模式
rEXTINT1 = rEXTINT1 & ~7<<12 | 2<<12   ;//設置EINT11 為 下降沿觸發(fā)
rEINTPEND = 1<<11;    //***EINTPEND中的 EINT11位 清0
rSRCPND = 1<<5;     //SRCPND中的 Eint8_23位 清0
rINTPND = 1<<5;     //INTPND中的 Eint8_23位 清0
pISR_EINT8_23 = (U32)Eint8_23_ISR;  //填入Eint8_23的中斷向量
rEINTMASK = rEINTMASK & ~(1<<11);  //***禁止EINT11的屏蔽
rINTMSK = rINTMSK & ~(1<<5);  //禁止Eint8_23的屏蔽
}

void   Eint8_23_ISR(void) __irq  //EINT2中斷例程
{
Uart_Printf("你按了一次Eint8_23引腳的按鍵\n");
rEINTPEND = 1<<11;    //***EINTPEND中的 EINT11位 清0
rSRCPND = 1<<5;     //SRCPND中的 Eint8_23位 清0
rINTPND = 1<<5;     //INTPND中的 Eint8_23位 清0
}
//*******************************************************************

結果如下:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:45457 發(fā)表于 2015-9-11 19:11 | 只看該作者
2440裸機編程之四 外部中斷
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线一区视频 | 国产精品久久久久久婷婷天堂 | 国产中文字幕在线 | 精品亚洲永久免费精品 | 国产精品免费视频一区 | 欧美性受xxxx白人性爽 | 91佛爷在线观看 | 鸳鸯谱在线观看高清 | 少妇一区在线观看 | 亚洲精品国产区 | 美女天天操 | 亚洲一区 | 欧美激情在线精品一区二区三区 | 国产精品久久久久久妇女 | 欧美激情久久久 | 亚洲一区二区精品视频 | 三级视频在线观看电影 | 久久综合一区 | 五月综合激情在线 | 91九色在线观看 | 中文字幕在线观看一区 | 午夜视频一区二区三区 | 久久爱一区 | 红桃成人在线 | 色999日韩 | 91麻豆产精品久久久久久 | 欧美日韩久久 | 亚洲国产高清在线 | 欧美精产国品一二三区 | 91免费入口 | 日韩精品在线观看免费 | 国产精品视频在线播放 | 91精品国产综合久久久动漫日韩 | 久久久国产精品一区 | 国产毛片毛片 | 午夜视频在线观看网址 | 97日日碰人人模人人澡分享吧 | 欧美成视频 | 精品国产乱码久久久 | 成人av资源在线 | 免费久久99精品国产婷婷六月 |