interrupt属于非标准的关键字。
C/C++编译器通过interrupt关键字扩展了C语言。这个关键字用来制定一个函数应该被看成一个中断函数。
处理中断的函数要求特殊的寄存器保存规则,增加一些特殊的返回序列(return sequence)。当C/C++代码被中断时,ISR必须预先保存所有会被ISR用到的寄存器的内容。被ISR调用到的函数的寄存器也要保存的。
当使用interrupt关键字时,编译器会按ISR函数要求的寄存器保存规则去保存寄存器然后生成一些特殊的返回代码序列。
ISR必须这样定义才能使用interrupt关键字:
interrupt void myISR(void)
{
unsigned int flags;
}