1. 程式人生 > >S3C2440 中斷相關暫存器小探

S3C2440 中斷相關暫存器小探

==========================================

轉載時請註明出處和作者聯絡方式

文章出處:http://blog.csdn.net/longintchar
作者聯絡方式:[email protected]

=====================================

肯定有的朋友和我一樣,對2440裡面的中斷暫存器迷惑,屢不清脈絡。結合網上資料和自己的琢磨,我大概搞清楚了。先上圖,以饗讀者。


1.  中斷分為兩大類

(1)外部中斷

24個外部中斷佔用GPF0-GPF7EINT0-EINT7),GPG0-GPG15EINT8-EINT23

)。這些中斷對應的是片子上的引腳,用的時候,需要把引腳配置為中斷模式,並且不要上拉。他們的觸發方式由暫存器EXTINT0-EXTINT2設定(比如上升沿,下降沿等)。

EINTPEND:這個是中斷掛起暫存器,清除時要寫1。當一個外部中斷(EINT4-EINT23)發生後,那麼相應的位會被置1。   
EINTMASK:這個是遮蔽中斷用的,儘管 EINTPEND你置位了,但是這個暫存器可以把你遮蔽掉。如果你沒有被遮蔽,那麼恭喜你闖入下一關—— SRCPND。
對於EINT4-EINT23,他們比較幸運,根本不受EINTPEND和EINTMASK的控制,直接進入SRCPND關卡與其他中斷源“PK”。

(2)內部中斷


帶子中斷的內部中斷有15個(見圖表1),他們受控於暫存器SUBSRCPND和 INTSUBMSK,這兩個暫存器的功能和上面的EINTPEND和EINTMASK類似,如果能闖過這兩關,自然進入下一關—— SRCPND。


對於不帶子中斷的內部中斷(一共20個),也算是種子選手了,不受上面2個暫存器的控制,直接進入SRCPND關卡與其他中斷源“PK”。

2. SRCPND平臺來PK,快中斷耍大牌

好了,現在闖入SRCPND關卡的選手開始PK了。規則是什麼呢?
SRCPND:來自四個參賽組的中斷源,如果佔據天時地利的話,會在這個暫存器佔有一席之地。接下來,考察一下他們的中斷模式。
 INTMOD:一箇中斷可以是普通中斷,也可以是快中斷。需要在這裡設定,但最多隻能有一個快中斷。
如果有幸被設定成唯一的快中斷,那麼你就坐上了中斷服務的快車,享受最高優先順序,系統優先響應你的需求,進入FIQ服務函式哦!如果沒有,也不要灰心,還有機會。


3.普通中斷競爭激烈
 INTMSK
:中斷遮蔽暫存器。在SRCPND中出現的普通中斷,又要在這個平臺篩選一下,如果沒有被遮蔽,恭喜進入下一關哦。
 PRIORITY:優先順序暫存器。來到這一關的中斷源會決一死戰,只能有一個勝出。


4.最後的勝利
上一輪勝出的選手也就是最後的贏家了,得到的獎賞就是 INTPND 暫存器的對應位置1,同時 INTOFFSET 暫存器儲存對應的值(0-31)。當然,最大的實惠就是進入IRQ服務函式。