中斷函式的結構
這裡是由硬體檢測到中斷訊號跳轉過來
o_irq:
/* 執行到這裡之前:
* 1. lr_irq儲存有被中斷模式中的下一條即將執行的指令的位址
* 2. spsr_irq儲存有被中斷模式的cpsr
* 3. cpsr中的m4-m0被設定為10010, 進入到irq模式
* 4. 跳到0x18的地方執行程式
*/
/* sp_irq未設定, 先設定它 */
ldr sp, =0x33d00000
/* 儲存現場 */
/* 在irq異常處理函式中有可能會修改r0-r12, 所以先儲存 */
/* lr-4是異常處理完後的返回位址, 也要儲存 */
sub lr, lr, #4
s***b sp!,
/* 處理irq異常 */
bl handle_irq_c
/* 恢復現場 */
ldmia sp!, ^ /* ^會把spsr_irq的值恢復到cpsr裡 */
定義乙個函式指標陣列,存放中斷服務函式
typedef void(*irq_func)(int);
irq_func irq_array[32];
中斷服務函式註冊函式
void register_irq(int irq, irq_func fp)
中斷服務函式 對實體的中斷服務函式進行管理、呼叫
void handle_irq_c(void)
void key_eint_irq(int irq)
else
}else if (irq == 2) /* eint2 : s3 控制 d11 */
else
}else if (irq == 5) /* eint8_23, eint11--s4 控制 d10, eint19---s5 控制所有led */
else
}else if (val & (1<<19)) /* eint19 */
else
}}eintpend = val;
微控制器 C語言函式 中斷函式(中斷服務程式)
在開始寫中斷函式之前,我們來一起回顧一下,微控制器的中斷系統。中斷的意思 學習過微機原理與接 術的同學,沒學過微控制器,也應該知道 我們在這裡就不講了,首先來回憶下中斷系統涉及到哪些問題。1 中斷源 中斷請求訊號的 8051有3個內部中斷源t0,t1,序列口,2個外部中斷源int0,int1 這兩個...
微控制器 C語言函式 中斷函式(中斷服務程式)
在開始寫中斷函式之前,我們來一起回顧一下,微控制器的中斷系統。中斷的意思 學習過微機原理與接 術的同學,沒學過微控制器,也應該知道 我們在這裡就不講了,首先來回憶下中斷系統涉及到哪些問題。1 中斷源 中斷請求訊號的 8051有3個內部中斷源t0,t1,序列口,2個外部中斷源int0,int1 這兩個...
利用CSL API函式管理DSP CPU中斷總結
專案過程中的關於dsp晶元中斷的一些經驗終結 首先,dsp晶元的csl 片上支援庫 api函式提供了對cpu中斷的管理模組irq,我們在做turbo編譯碼模組的專案中,在對硬體中斷進行初始化的過程中,使用了irq模組 我對其中的某幾個函式簡要分析一下,irq setvecs 功能 設定中斷向量表的基...