1. 程式人生 > 其它 >英飛凌TC264之外部中斷

英飛凌TC264之外部中斷

技術標籤:智慧車嵌入式

一.外部中斷說明:
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也放在向量表,顯然後面的向量會被覆蓋.如果被覆蓋的向量是空的無問題.如果非空出現問題由程式設計師負責編譯工具不檢查這點!

5.發生中斷後硬體自動儲存Upper CSA.如需儲存LowerCSA.需由程式設計師自己寫指令來儲存與恢復.
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);

中斷服務函式隨便寫

中斷號裡要選擇用cpu0,cpu1,DMA的其中一個
優先順序也要配置好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)
{
}

完成這些就可以開啟外部中斷了