英飛凌TC264之外部中斷
阿新 • • 發佈:2021-01-27
一.外部中斷說明:
1.256個向量第一個也就是第0號的中斷向量無效.僅用來佔位置.所以一共有255個向量,但是要佔用256個向量的位置
2.向量表以優先級別排序數字越小優先級別越低,與arm,k60相反
3每個向量32 Byte,也就是8個word.如果中斷Handler非常短,可以直接放在這32Byte的空間.一般是放跳轉指令跳轉到真正的中斷Handler.(Tricore 1.6的中斷向量可以選擇32還是8 Byte, Tricore 1.3不能選擇,只能32 Byte).
4.如果中斷Handle超過了32Byte也放在向量表,顯然後面的向量會被覆蓋.如果被覆蓋的向量是空的無問題.如果非空出現問題由程式設計師負責編譯工具不檢查這點!
6.有4箇中斷向量留給軟體.只能軟體觸發.方便RTOS設計,如上幾篇貼子寫的FreeRTOS就是利用了其中一個軟體中斷來實現延遲中斷進行任務排程的效果.
7.中斷不一定由CPU來響應對於TC1782,.還可能是由PCP來響應對於多核的器件還可由其它核來響應.某些中斷必須由某個特定的中斷master(CPU或者PCP)來響
二.如何開啟外部中斷
也就是說只能開啟4個外部中斷,且每組內不能重複。
GPIO外部中斷配置:
/* GPIO外部中斷 中斷服務函式 中斷號(cpu0,cpu1,DMA) 優先順序*/
IFX_INTERRUPT(PIN_INT0_IRQHandler, PIN_INT0_VECTABNUM, PIN_INT0_PRIORITY);
IFX_INTERRUPT(PIN_INT1_IRQHandler, PIN_INT1_VECTABNUM, PIN_INT1_PRIORITY);
IFX_INTERRUPT(PIN_INT2_IRQHandler, PIN_INT2_VECTABNUM, PIN_INT2_PRIORITY);
IFX_INTERRUPT(PIN_INT3_IRQHandler, PIN_INT3_VECTABNUM, PIN_INT3_PRIORITY);
中斷服務函式隨便寫
優先順序也要配置好1-255 數字越大優先順序越高
中斷服務函式:
void PIN_INT0_IRQHandler(void)
{
}
初始化外部中斷函式:
// * 引數說明:pin : 管腳標號 lq_gpio.h中定義
// mode : GPIO 模式 lq_gpio.h中的巨集定義中選擇*
void PIN_Exti(GPIO_Name_t pin, IfxPort_InputMode mode)
{
}
完成這些就可以開啟外部中斷了