功用剖析
支撑56个中止
寄存器剖析
SRCPND
INTMOD
INTMSK
INTSUBMSK
EXTINT
EINTPEND
INTPND
代码剖析
__irq的运用
__irq为一个标识,用来表明一个函数是否为中止函数。关于不同的编译器,__irq在函数名中的方位不相同,例如:
ADS编译器中: void __irq IRQ_Eint0(void);
Keil编译器中: void IRQ_Eint0(void) __irq;
可是其含义相同,它所完结的使命是标识该函数为中止函数,在编译器编译是调用此函数时,先维护函数进口现场,然后履行中止函数,
函数履行结束,康复中止现场,这整个进程不需要用户从头编写代码来完结,由编译器主动完结。因此这也给不具备中止嵌套功用的ARM体系带来
了问题,若运用 __irq 时有中止嵌套发生,这现场维护就会紊乱。在前一篇日志“LPC2000系列中止嵌套处理”中,自己编写中止进口现场维护代
码,并不运用 __irq 标识符号,便是这个原因。
总结如下:
1、若不想自己编写中止进口现场维护代码,并且运用中无中止嵌套,在中止函数顶用 __irq 来标识咱们的中止函数,不然犯错;
2、若程序中要运用中止嵌套,关于无中止嵌套功用的ARM来说,一定要自己编写中止进口现场维护代码,并且不能用 __irq 标识咱们的
中止函数,不然犯错。