ARM裸機開發(fā)222440中斷原理
通常有以下三種方式
本文引用地址:http://www.biyoush.com/article/201611/318241.htm1.查詢方式
2.中斷方式
3.DMA方式(在獨立開辟的一個空間不由CPU控制,有DMA自己進行管理。實現存儲器與外設的高速的數據傳輸方式)
主要講中斷:
中斷請求---->中斷仲裁---->中斷響應---->中斷處理---->中斷返回(要保存現場)
中斷處理流程:
1.中斷控制器捕獲當前外設發(fā)出的中斷信號,通知SOC(中央處理芯片:片上系統(tǒng))
2.SOC保存當前程序的運行環(huán)境,調用中斷服務程序(ISR:一小段代碼)進行處理中斷
3.在ISR中通過讀取中斷控制寄存器、外設的相關寄存器來識別那一個中斷觸發(fā),獲取硬件中斷號IRQ,跳轉到相應的處理程序(詳細完整的處理程序)來完成中斷處理
4.清除中斷:通過讀寫相關寄存器
5.恢復被中斷的環(huán)境,繼續(xù)執(zhí)行(現場)
2440有60個中斷源
一級中斷源,二級中斷源等的概念
圖片中的所指示的單元為相應的寄存器
懸掛寄存器source pending(SUBSRCPND、SRCPND)清零方式為向相應的位寫1.與 常規(guī)的清零方式不同。INTPND也是通過寫1進行清0操作
INTOFFSET:這個寄存器用來表示INTPND寄存器中哪位被置1了,即INTPND寄存器中位為1時,INTOFFSET寄存器的值為x(x為0~31)
在清除SRCPND、INTPND寄存器時,INTOFFSET寄存器被自動清除。
具體內容詳見芯片手冊S3C2440
外部中斷:
外部中斷也有相關的寄存器EXTINTx,EINTMASK,EINTPEND三個寄存器
EXTINTx設置中斷的觸發(fā)方式低電平,高電平,上升沿,下降沿,邊沿觸發(fā)
EINTMASK
EINTPEND中斷懸掛寄存器(相應中斷觸發(fā),相應的位置1)讀取此寄存器可以知道是那一個寄存器被觸發(fā)了
評論