新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > s3c2410中斷異常處理

        s3c2410中斷異常處理

        作者: 時間:2010-01-27 來源:網(wǎng)絡(luò) 收藏

        正如你所見的,INTPND寄存器與SRCPND長得一模一樣,但他們在中卻扮演著不同的角色,如果說SRCPND是信號進入模塊后所經(jīng)過的第一個場所的話,那么INTPND

        則是中斷信號在中斷模塊里經(jīng)歷的最后一個寄存器。它的每個位對應一個中斷請求,若該位被置1,則表示相應的中斷請求被觸發(fā),描述到這里你可能會發(fā)現(xiàn)它不僅和SRCPND長得一模一樣,就連功能都一樣,其實不然,他們在功能上有著重大的區(qū)別。SRCPND是中斷源引腳寄存器,某個位被置1表示相應的中斷被觸發(fā),但我們知道在同一時刻內(nèi)系統(tǒng)可以觸發(fā)若干個中斷,只要中斷被觸發(fā)了,SRCPND的相應位便被置1,也就是說SRCPND

        在同一時刻可以有若干位同時被置1,然而INTPND則不同,他在某一時刻只能有1個位被置1,INTPND

        某個位被置1(該位對應的中斷在所有已觸發(fā)的中斷里具有最高優(yōu)先級且該中斷沒有被屏蔽),則表示CPU即將或已經(jīng)在對該位相應的中斷進行處理。于是我們可以有一個總結(jié):SRCPND說明了有什么中斷被觸發(fā)了,INTPND說明了CPU即將或已經(jīng)在對某一個中斷進行處理。

        特別注意:每當某一個中斷被處理完之后,我們必須手動地把SRCPND/SUBSRCPND ,

        INTPND三個寄存器中與該中斷相應的位由1設(shè)置為0,剛才我說INTPND的操作很特別,它的特別之處就在于對當我們要把該寄存器中某個值為1的位設(shè)置為0時,我們不是往該位置0,而是往該位置1。假設(shè)SRCPND=0x00000003,INTPND=0x00000001,該值說明當前0號中斷和1號中斷被觸發(fā),但當前正在被處理的是0號中斷,處理完畢后我們應該這樣設(shè)置INTPND和SRCPND:

        SRCPND=0x00000002

        //位0被置為0

        INTPND =0x00000001

        //位0被置為0(方法是往該位寫入1)

        INTOFFSET寄存器的功能則很簡單,它的作用只是用于表明哪個中斷正在被處理。下面是該寄存器各位詳細功能列表

        若當前INT_TIMER0被觸發(fā)了,則該寄存器的值為10,以此類推。

        現(xiàn)在我把整個中斷流程用一個圖加以說明

        以上這個圖清楚地說明了一個中斷處理流程。

        下面我用INT_TIMER0,INT_TIMER2和INT_UART0三個中斷完整地介紹一次中斷處理。首先我們得做幾個假設(shè):

        假設(shè)1:這三個中斷的屏蔽被取消。

        假設(shè)2:PRIORITY寄存器中ARB_MODE2,ARB_MODE5皆為0,既不進行優(yōu)先級的自動旋轉(zhuǎn)排序,任何時候ARBITER2,ARBITER5控制的中斷組優(yōu)先級次序分別為0-1-2-3-4-5和1-2-3-4。

        假設(shè)3:這三個中斷皆為IRQ類型。

        假設(shè)4:這三個中斷同時被觸發(fā)。

        INT_TIMER0,

        INT_TIMER2和INT_UART0三個中斷被同時觸發(fā),此時三個中斷信號流向SRCPND寄存器,使該寄存器中的第10位,12位,28位被置為1,中斷信號繼續(xù)向前流經(jīng)INTMASK

        寄存器,這三個中斷都沒有被屏蔽,于是信號進一步流經(jīng)INTMODE寄存器,這三個中斷皆為IRQ類型,故中斷信號繼續(xù)向前流向PRIORITY寄存器,經(jīng)過優(yōu)先級判斷,INT_TIMER0中斷信號使INTPND

        寄存器的第10位置1(INT_TIMER0優(yōu)先級最高),此時INTOFFSET

        寄存器的值為10,CPU轉(zhuǎn)向相應的中斷服務(wù)例程進行處理。處理完畢后,我們的程序?qū)NTPND和SRCPND的第10置為0,至此INT_TIMER0中斷處理完畢。此時SRCPND

        的第12位,28位仍為1(這兩個中斷請求未被處理),故他們會繼續(xù)被CPU已剛才描述的方式進行處理。


        上一頁 1 2 3 4 下一頁

        關(guān)鍵詞: 處理 異常 中斷 s3c2410

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 安阳县| 建宁县| 中超| 济阳县| 延津县| 怀安县| 贡嘎县| 武清区| 东光县| 南京市| 依安县| 泰州市| 和顺县| 湘西| 江北区| 龙陵县| 池州市| 同德县| 内江市| 静乐县| 长葛市| 抚顺市| 安仁县| 榆树市| 项城市| 波密县| 土默特右旗| 临城县| 资源县| 美姑县| 沧源| 宁城县| 彰武县| 浦东新区| 绍兴县| 安徽省| 咸丰县| 宁波市| 安图县| 苗栗县| 宁强县|