|
//中断初始化部分
rGPFCON =0x22a;//(2<<8)|(2<<4)|(2<<2)|2 ; 0010 0010 1010 //GPF4,2,1,0 set EINT,GPFCON对应位为10时,则为EINT
rEXTINT0 =0x2022;//(0x2<<16)|(0x2<<8)|(0x2<<4)|2; 001x 0000 001x 001x 001x//set eint0,1,2,4 falling edge int,设置为下降沿触发
pISR_EINT0 = pISR_EINT1 = pISR_EINT2 = pISR_EINT4_7 = (unsigned int)Key_ISR;
//EnableIrq(BIT_EINT0|BIT_EINT1|BIT_EINT2|BIT_EINT4_7);
//rINTMOD=0x0;//设置为IRQ模式
rEINTPEND=0xffffff;//外部中断悬挂寄存器使能
rSRCPND=KEY1|KEY2|KEY3|KEY4;//中断源状态寄存器
rINTPND=KEY1|KEY2|KEY3|KEY4;//中断源状态寄存器
rEINTPEND |= (1<<4);
//clear eint 4
rEINTMASK = ~(1<<4); //enable eint 4
rINTMSK=0x0;//开启中断
请问这么设置中断有问题吗?我的怎么无法实现中断啊?还请高手指点,下面是中断处理函数
static void __irq Key_ISR(void)
{
unsigned char key;
unsigned int r;
EnterCritical(&r);
//Uart_Printf("eint1\n");
//ClearPending(BIT_EINT1);
rSRCPND=0x01;
rINTPND=rINTPND;
rGPBDAT=0x00000001;//打开蜂鸣器
p=1;//设置中断标记位,主函数中查询
ExitCritical(&r);
} |
|