新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > S3C2410外部中斷

        S3C2410外部中斷

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

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

        本文引用地址:http://www.104case.com/article/201611/317235.htm

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

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

        但是對于其他的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來清除未處理狀態,因此對于EINT4~7、EINT8~23這20個外部中斷的清除掛起寄存器的順序是:

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

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

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



        關鍵詞: S3C2410外部中

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 莱芜市| 买车| 宣威市| 北海市| 新源县| 临城县| 成安县| 华阴市| 周口市| 辽阳市| 萨嘎县| 绵竹市| 社会| 普宁市| 霍林郭勒市| 金坛市| 合阳县| 东丰县| 汝城县| 和田县| 修水县| 崇义县| 璧山县| 平罗县| 成安县| 宜兰市| 武清区| 阿图什市| 叶城县| 南木林县| 灵台县| 临潭县| 攀枝花市| 遵义市| 明溪县| 朝阳区| 呼图壁县| 电白县| 芮城县| 巴塘县| 万全县|