中斷寄存器詳解

對2440平臺有效


●SUBSRCPND寄存器:它用來表示INT_RXD0、INT_TXD0等中斷是否發生(注:這些中斷是某一大類中斷中的子類),每位對應一箇中斷。當這些中斷髮生並且沒有被INTSUBMSK寄存器屏蔽,則它們中的若干位將彙集出現在SRCPND寄存器的某一位上。要清除中斷,往此寄存器中某位寫1。


●INTSUBMSK寄存器:與SUBSRCPND寄存器對應,它用來屏蔽SUBSRCPND寄存器所標識的中斷。INTSUBMSK寄存器中某位設置1時,對應的中斷被屏蔽。


●SRCPND寄存器:它每一位被用來表示一個/一類中斷是否發生。要清除某一位,往此位寫1,具體參考數據手冊。


●INTMSK寄存器:與SRCPND寄存器對應,用來屏蔽SRCPND寄存器所標識的中斷。INTMSK寄存器中某位被設爲1時,對應的中斷被屏蔽,它只能屏蔽IRQ中斷,不能屏蔽FIQ。


●INTMOD寄存器:它某位被設爲1時,對應的中斷被設爲FIQ。同一時間,INTMOD只能有一位被設爲1。


●PRIORITY寄存器:當有多個普通中斷同時發生時,中斷控制器選出最高優先級的中斷,首先處理它。中斷優先級通過7個仲裁器來完成,每個仲裁器基於一個位仲裁器模式控制(ARB_MODE,對應寄存器的[6:0]位)和選擇控制信號(ARB_SEL,對應寄存器的[20:7]位)的兩位來處理6箇中斷請求。


●INTPND寄存器:經過中斷優先級選出優先級最高的中斷後,這個中斷在INTPND寄存器中的相應位被置1,隨後CPU進入中斷模式處理它,同一時間,此寄存器只有一位被置1。在ISR中,可以根據這個位確定是哪個中斷,清除中斷時,往此位寫入1。


●INTOFFSET寄存器:用來表示INTPND寄存器中哪位被置1了,即INTPND寄存器中位[x]爲1時,INTOFFSET寄存器的值爲x(x爲0-31)。清除SRCPND、INTPND寄存器時,INTOFFSET寄存器被自動清除。


★S3C2410提供了以下外部中斷控制寄存器。
24個外部中斷佔用GPF0~GPF7(EINT0~EINT7)、GPG0~GPG15(EINT8~EINT23)。用這些腳做中斷輸入,則必須配置引腳爲中斷,並且不要上拉。


●EXTINT0~EXTINT2寄存器:設定EINT0~EINT23的觸發方式。


●EINTFLT0~EINTFLT3寄存器:控制濾波時鐘和濾波寬度。


●EINTPEND寄存器:這個是中斷掛起寄存器,清除時要寫1。當一個外部中斷(EINT4~EINT23)發生後,那麼相應的位會被置1。爲什麼沒有EINT0~EINT3,看看SRCPND就知道了,裏面沒有EINT4~EINT23的位子,所以有了EINTPEND。


●EINTMASK寄存器:屏蔽中斷用的,某位爲1時,此次中斷無效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章