三 s3c2440 中斷實驗

2022-09-20 00:51:15 字數 1830 閱讀 2881

中斷實驗

一、進入中斷前的準備

1、儲存進入中斷前的環境

2、進入中斷模式,設定中斷模式下的棧

二、中斷處理框圖詳解:

第一路:

當內部觸發中斷後,subsrcpnd相應的位置1,代表某個中斷發生。並且srcpnd的相應位也置1。

對於普通中斷irq,當同時發生幾個中斷的時候,我們要通過優先順序來決定哪個先執行,哪個後執行。

這時候,優先順序高的先執行,此時intpnd相應位置1。中斷服務函式中判斷中斷源時,可以通過

intpnd或者intoffset來判斷。

第二路:

外部中斷發生的時候,直接在srcpnd處相應位置1,然後往後執行和第一路差不多,最後進入了中斷函式。

三、中斷控制暫存器詳解:

1、srcpnd與subsrcpnd的父子關係

由於2440是32位cpu,所以srcpnd只能對應32個中斷。但是cpu的中斷遠比32個多。那麼怎麼辦呢。srcpnd的32個位對應的中斷中,

有的是1位對應一組中斷。當srcpnd的一組中斷置1時,我們不能判斷這一組中斷中那個被發生了中斷。所以才有了subsrcpnd來指定

這一組中斷中到底哪一位發生了中斷。

2、intmsk和intsubmsk的父子關係

和上面的暫存器一樣,***msk暫存器是遮蔽某個中斷的。intmsk和srcpnd是一組對應關係。但是intmsk不能遮蔽一組中斷。所以必須有乙個

子中斷遮蔽器intsubmsk來遮蔽上面第一條中說的具體中斷。但是intmsk不能遮蔽fiq中斷。

3、要遮蔽快速中斷,需要另乙個暫存器,那就是intmod。

4、經過優先順序仲裁後,優先順序最高的中斷源優先發生中斷,使得intpnd和intoffset相應位置1。

四、進入中斷函式後:

通過intoffset的相應位來判斷中斷源,然後執行相應的操作後,最後是清中斷的過程。

清中斷:(從源頭開始清除)

1、清楚subsrcpnd srcpnd中相應位(往相應位寫1)

2、清楚intpnd的相應位(往相應位寫1)

3、在清除前面幾個暫存器後,intoffset暫存器的相應位被自動清除。

4、在處理外部中斷時,還需清除eintpnd的相應位。

五、恢復到之前的工作模式:

恢復現場

六、核心語句

實驗現象:通過按鍵中斷,控制led燈的亮滅。

1、在進入中斷模式之前需要進行前乙個模式的各個暫存器的儲存工作

2、在開始程式之前,需要把中斷開啟

由於之前沒有把邏輯搞明白,在開中斷的時候把&寫成了|,導致中斷一直沒開啟。

七、總結:

中斷實驗是s3c2440中比較重要的裸機程式實驗。經過之前的多次實驗,要注意的問題很多,犯得錯誤只要是一下幾點:

1、未正確開啟中斷

2、定義引腳位址時候出錯,浪費了很多時間

3、makefile中鏈結時候的順序出錯,導致程式不執行

所以在今後的學習中,要注意細節,多做筆記。加油!!!

S3c2440中斷學習

中斷功能在微控制器上一直在用,今天學習在2440上用外部中斷的方式,實現按鍵檢測功能。1.中斷生命週期 中斷源,中斷過濾,中斷處理 1.1 中斷源 2440有60個中斷源。1.2 中斷過濾 有兩個關卡,submask和mask,中斷方式有mode控制。1.3 中斷處理 非向量方式 2440 向量方式...

S3C2440 中斷控制暫存器

1 subsrcpnd 暫存器 sub source pending subsrcpnd 暫存器被用來標識 int rxd0 int txd0 等中斷 s3c2410中這類中斷有 11 個,而 s3c2440 中有 15 個 是否已經發生,每位對應乙個中斷。當這些中斷發生並且沒有被 intsubms...

S3C2440中斷暫存器

s3c2440的中斷暫存器 1.中斷分兩大類 內部中斷和外部中斷。2.外部中斷。24個外部中斷占用gpf0 gpf7 eint0 eint7 gpg0 gpg15 eint8 eint23 用這些腳做中斷輸入,則必須配置引腳為中斷,並且不要上拉。具體參考datesheet資料手冊。暫存器 extin...