工程中使用两个中断,分别使用GP2[13]和GP4[14],但现在一直不能进入中断,不知道是不是配置问题,望指点?????
中断配置如下:
void initExint(void)
{
CSR&=0xfffe; //关中断
asm(" NOP 2 ");
GPIO_INSTAT23=0xFFFFFFFF; //清除第2 3 BANK的中断标志位
GPIO_INSTAT45=0xFFFFFFFF; //清除第4 BANK的中断标志位
GPIO_BINTEN=0x14; //使能GPIO BANK 2 4外部中断功能
GPIO_CLR_RIS_TRIG23=0x00002000; //关闭上升沿中断GPIO2[13]
GPIO_SET_FAL_TRIG23=0x00002000; //设置下降沿中断
GPIO_CLR_RIS_TRIG45=0x00004000; //关闭上升沿中断GPIO4[14]
GPIO_SET_FAL_TRIG45=0x00004000; //设置下降沿中断
INTmux1=0x3631; //映射GPIO口事件到CPU中断
asm(" NOP 2 "); // 关中断 GIE=0
ISTP=0x80000000; // 重置中断向量表到0C00h
asm(" NOP 2 ");
ICR=0xFFFF;
asm(" NOP 2 ");
ISR=0x0; // 清除等待的中断
asm(" NOP 2 ");
IER=0xffff;
}
中断服务程序:
void interrupt Ex2INT()
{
asm(" DINT "); //CSR&=0xfffe; //关中断
asm(" NOP 2 ");
if(GPIO_INSTAT23 & 0x00002000) // 清除中断标志GPIOSTA
{
interrupt4++;
}
GPIO_INSTAT23=0xffffffff;
asm(" NOP 2 ");
asm(" RINT "); // CSR=CSR|0x1; // 开中断
}
jie tian2:
回复 Shine:
谢谢工程师,问题找到啦,在主函数中没有打开总中断CSR=CSR|1;
而且一定要注意中断服务程序的入口地址一定要和CMD文件匹配;
Shine:
回复 jie tian2:
谢谢分享!