在本文我们以按键中断为例(其他中断差不多配置方法):
一:首先我们应该按键初始化,
从上图中可以看到,按键外部中断分别是EINT8,EINT11,EINT13,EINT14,EINT15,EINT19. 对应的GPIO口是GPG0,GPG3,GPG5,GPG6,GPG7,GPG11.
将对应的IO口设置为中断功能.
二.中断初始化.
1.cpsr中相应的irq位使能.
2.使中断模式为irq模式.
3.开启相应的中断.
4.开启相应的外部中断.
#define INTBIT ((1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19))
三.中断处理函数.
1.判断相应的中断源.(判断INTOFFSET寄存器:The value in the interrupt offset register shows which interrupt of IRQ mode in the INTPND register,This bit can be cleared automatically by clearingSRCPND and INTPND).
2.判断中断源的具体中断:(判断EINTPEND寄存器).
然后根据中断源的具体中断做不同的事.
每一次中断结束后都应该清除中断.(SRCPND,INTPND寄存器).
在主函数里面调用init_irq(),中断处理函数handle_irq()应该装载到相应的地方.
特别注意:中断处理函数handle_irq()前面应该加上__irq,如果没有加的话,中断就出不来,因为编译器识别这个。