ZHCU876Z July 2001 – October 2023 SM320F28335-EP
如果 C/C++ 中断例程未调用任何其他函数,则只会保存和恢复中断处理程序使用的寄存器。但如果 C/C++ 中断例程调用了其他函数,这些函数可修改中断处理程序未使用的未知寄存器。因此,如果调用了任何其他函数,编译器会保存所有调用保存寄存器。
但是,如果使用了 --float_support=fpu32/fpu64 选项,则会保存和恢复 STF 寄存器。中断例程执行的任何 STF 标志修改都将在例程返回时撤消。
C/C++ 中断例程与任何其他 C/C++ 函数一样,可以有局部变量和寄存器变量;但是,其在声明时应该不带参数并且应该返回 void。不应直接调用中断处理函数。
可使用 INTERRUPT pragma 或 __interrupt 关键字,直接通过 C/C++ 函数处理中断。有关 INTERRUPT pragma 的信息,请参阅节 6.9.15。有关 __interrupt 关键字的信息,请参阅节 6.5.3。