?? eint1_vect.c
字號(hào):
/****************************************************************************
* 文件名:EINT1_VECT.C
* 功能:使用外部中斷1進(jìn)行B1的控制,每當(dāng)有一次中斷時(shí),即取反B1控制口,以便指示中斷輸入。
* 使用向量中斷方式。
* 說明:將跳線器JP9短接,JP4斷開,然后短接/斷開JP1(使EINT1為低/高電平)。
****************************************************************************/
#include "config.h"
#define BEEPCON 0x00000080 /* P0.7引腳控制B1,低電平蜂鳴 */
/****************************************************************************
* 名稱:IRQ_Eint1()
* 功能:外部中斷EINT1服務(wù)函數(shù),取反B1控制口。
* 入口參數(shù):無
* 出口參數(shù):無
****************************************************************************/
void __irq IRQ_Eint1(void)
{ uint32 i;
i = IO0SET; // 讀取當(dāng)前B1控制值
if( (i&BEEPCON)==0 ) // 控制B1輸出取反
{ IO0SET = BEEPCON;
}
else
{ IO0CLR = BEEPCON;
}
EXTINT = 0x02; // 清除EINT1中斷標(biāo)志
VICVectAddr = 0; // 向量中斷結(jié)束
}
/****************************************************************************
* 名稱:main()
* 功能:初始化外部中斷1(EINT1)為向量中斷,并設(shè)置為下降沿觸發(fā)模式,然后等待外部中斷。
* 說明:在STARTUP.S文件中使能IRQ中斷(清零CPSR中的I位)。
****************************************************************************/
int main(void)
{ PINSEL0 = 0x20000000; // 設(shè)置管腳連接,P0.14設(shè)置為EINT1
IO0DIR = BEEPCON; // 設(shè)置B1控制口為輸出,其它I/O為輸入
EXTMODE = 0x02; // 設(shè)置EINT1中斷為邊沿觸發(fā)模式
EXTPOLAR = 0x00; // 設(shè)置EINT1中斷為下降沿觸發(fā)
/* 打開EINT1中斷(設(shè)置向量控制器,即使用向量IRQ) */
VICIntSelect = 0x00000000; // 設(shè)置所有中斷分配為IRQ中斷
VICVectCntl0 = 0x2F; // 分配EINT1中斷到向量中斷0
VICVectAddr0 = (int)IRQ_Eint1; // 設(shè)置中斷服務(wù)程序地址
EXTINT = 0x02; // 清除EINT1中斷標(biāo)志
VICIntEnable = 0x00008000; // 使能EINT1中斷
while(1); // 等待中斷
return(0);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -