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
編譯器通過添加 __interrupt 關(guān)鍵字來擴展 C/C++ 語言,該關(guān)鍵字指定函數(shù)被視為中斷函數(shù)。此關(guān)鍵字是一個 IRQ 中斷。除了在嚴格 ANSI C 或 C++ 模式中,還可以使用備用關(guān)鍵字“interrupt”。
請注意,節(jié) 5.11.16 中描述的中斷函數(shù)屬性是聲明中斷函數(shù)的推薦語法。
處理中斷的函數(shù)遵循特殊的寄存器保存規(guī)則和特殊的返回序列。該實現(xiàn)方案強調(diào)安全性。中斷例程不假定各種 CPU 寄存器和狀態(tài)位的 C 運行時慣例有效;相反,它會重新建立運行時環(huán)境假定的任何值。當 C/C++ 代碼被中斷時,中斷例程必須保留例程或例程所調(diào)用任何函數(shù)使用的所有機器寄存器的內(nèi)容。在函數(shù)定義中使用 __interrupt 關(guān)鍵字時,編譯器會根據(jù)中斷函數(shù)的規(guī)則和中斷的特殊返回序列生成寄存器保存。
您只能將 __interrupt 關(guān)鍵字與定義為返回 void 且沒有參數(shù)的函數(shù)一同使用。中斷函數(shù)的主體可以有局部變量,并且可以自由地使用?;蛉肿兞俊@纾?/p>
__interrupt void int_handler()
{
unsigned int flags;
...
}名稱 c_int00 是 c/c++ 的入口點。此名稱是為系統(tǒng)復(fù)位中斷而保留的。這個特殊的中斷例程可初始化系統(tǒng)并調(diào)用 main() 函數(shù)。因為它沒有調(diào)用方,所以 c_int00 不保存任何寄存器。