ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
当 C/C++ 代码被中断时,中断例程必须保存例程或例程所调用任何函数使用的所有机器寄存器的内容。寄存器保存必须由中断例程明确处理。
__interrupt void example (void)
{
...
}
如果 C/C++ 中断例程未调用任何其他函数,则只会保存和恢复中断处理程序使用的寄存器。但如果 C/C++ 中断例程调用了其他函数,这些函数可修改中断处理程序未使用的未知寄存器。因此,如果调用了任何其他函数,例程会保存所有调用保存寄存器。(这不包括影子寄存器。)请勿直接调用中断处理函数。
可使用 INTERRUPT pragma 或 __interrupt 关键字,直接通过 C/C++ 函数处理中断。相关信息,请参见节 5.11.16和节 5.7.2。