新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > S3C2410外部中斷

S3C2410外部中斷

作者: 時間:2016-11-10 來源:網(wǎng)絡 收藏
S3C2410有24個外部中斷引腳:EINT0~EINT23,但是對于EINT0~EINT3這4個外部中斷而言,使用比較簡單;對于其它20個而言,使用稍稍復雜一些。

首先,來看S3C2410的中斷控制器,有6個中斷裁決器分為2級,第1級5個,第2級1個;第1級的5個裁決器管理32級中斷源,在這32級中斷源中有2個保留,24級是給內(nèi)部中斷源的,對于24個外部中斷只給了6個中斷級:EINT0、EINT1、EINT2、EINT3、EINT4~7、EINT8~23,EINT4~EINT7共享一個中斷級,EINT8~EINT23共享一個中斷級。

本文引用地址:http://butianyuan.cn/article/201611/317235.htm

中斷控制器中主要的相關寄存器有:INTMSK、SRCPND、PRIORITY、INTPND,還有一個INTMOD。但是對于外部中斷還有幾個寄存器:EXTINTn、EINTMSK、EINTPEND等。

對于外部中斷EINT0~EINT3由于沒有共享,因此外部寄存器中只有EXTINT0和它們有關,進行中斷觸發(fā)電平信號的設置。

但是對于其他的20個外部中斷而言,所有上面提到的寄存器都有關系。實際上對于EINT4~EINT23,實際上可以看作有3級屏蔽,第1級屏蔽是CPSR中的I-Bit和F-Bit,第2級屏蔽是EINTMASK([4:23]每一位對應一個相應的外部中斷),第3級屏蔽是INTMSK(Bit4、Bit5);對于EINT0~EINT3而言,只是INTMSK中的Bit0~Bit3,因此在變成初始化時應該要特別注意。

在外部中斷有中斷請求時,由于EINT4~7、EINT8~23分別共享中斷,因此在SRCPND中分別對應Bit4、Bit5,最終導致INTPND中的相應位置1(在任何時刻只能有一個位置1),但是如何分辨這些共享的中斷?可以通過查詢EINTPEND來進行(Bit4~Bit23分別對應1個外部中斷)。由于在相應中斷后在服務例程中應將掛起寄存器中相應的位清0來清除未處理狀態(tài),因此對于EINT4~7、EINT8~23這20個外部中斷的清除掛起寄存器的順序是:

1. EINTPEND(可能多位同事為1),方法:向要清0的位寫1,其它位寫0,但要注意由于第4位保留,因此不要試圖向第4位寫1,可能會導致不可預料的結果。

2.SRCPND(可能多位同時為1),方法:向要清0的位寫1,其它位寫0。

3.INTPND,方法:向其寫本身的數(shù)據(jù)(即INTPND=INTPND)。



關鍵詞: S3C2410外部中

評論


技術專區(qū)

關閉