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
當(dāng) C/C++ 代碼被中斷時(shí),中斷例程必須保存例程或例程所調(diào)用任何函數(shù)使用的所有機(jī)器寄存器的內(nèi)容。寄存器保存必須由中斷例程明確處理。
__interrupt void example (void)
{
...
}
如果 C/C++ 中斷例程未調(diào)用任何其他函數(shù),則只會(huì)保存和恢復(fù)中斷處理程序使用的寄存器。但如果 C/C++ 中斷例程調(diào)用了其他函數(shù),這些函數(shù)可修改中斷處理程序未使用的未知寄存器。因此,如果調(diào)用了任何其他函數(shù),例程會(huì)保存所有調(diào)用保存寄存器。(這不包括影子寄存器。)請(qǐng)勿直接調(diào)用中斷處理函數(shù)。
可使用 INTERRUPT pragma 或 __interrupt 關(guān)鍵字,直接通過 C/C++ 函數(shù)處理中斷。相關(guān)信息,請(qǐng)參見節(jié) 5.11.16和節(jié) 5.7.2。