在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > S3C內(nèi)部中斷和外部中斷

            S3C內(nèi)部中斷和外部中斷

            作者: 時間:2016-11-13 來源:網(wǎng)絡 收藏
            1.中斷分兩大類:內(nèi)部中斷外部中斷。

            2.外部中斷。24個外部中斷占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用這些腳做中斷輸入,則必須配置引腳為中斷,并且不要上拉。具體參考datesheet數(shù)據(jù)手冊。

            寄存器:EXTINT0-EXTINT2:三個寄存器設定EINT0-EINT23的觸發(fā)方式。

            EINTFLT0-EINTFLT3:控制濾波時鐘和濾波寬度。

            EINTPEND:這個是中斷掛起寄存器,清除時要寫1,后面還有幾個是寫1清除。當一個外部中斷(EINT4-EINT23)發(fā)生后,那么相應的位會被置1。為什么沒有EINT0-EINT3,呵呵,看看SRCPND就知道了,里面沒有EINT4-EINT23的位子,所以有了EINTPEND。

            EINTMASK:這個簡單,是屏蔽中斷用的,也就是說位為1時,此次中斷無效。

            3.內(nèi)部中斷。內(nèi)部中斷有8個寄存器,下面逐一來看。

            寄存器:SUBSRCPND:當一個中斷發(fā)生后,那么相應的位會被置1,表示一個中斷發(fā)生了。

            INTSUBMSK:與上一個是一伙的,中斷屏蔽寄存器,具體屏蔽什么,自己看手冊去吧。

            INTMOD:中斷的方式。一個中斷可以是普通中斷,也可以是快中斷,在這里設置,但只能有一個快中斷。

            PRIORITY:優(yōu)先級寄存器,不說了。

            SRCPND:當一個中斷發(fā)生后,那么相應的位會被置1,表示一個或一類中斷發(fā)生了。

            INTMSK:中斷屏蔽寄存器。

            INTPND:中斷發(fā)生后,SRCPND中會有位置1,可能好幾個(因為同時可能發(fā)生幾個中斷),這些中斷會由優(yōu)先級仲裁器選出一個最緊迫的,然后吧把INTPND中相應位置1,所以同一時間只有一位是1。也就是說前面的寄存器置1是表示發(fā)生了,只有INTPND置1,CPU才會處理。
            INTOFFSET:用來表示INTPND中哪一位置1了,好讓你查詢,普通中斷跳轉(zhuǎn)時查詢用。清除INTPND、SRCPND時自動清除。

            4.各寄存器關系:
            5.中斷過程。

            a如果是不帶子中斷的內(nèi)部中斷:發(fā)生后SRCPND相應位置1,如果沒有被INTMSK屏蔽,那么等待進一步處理。

            b如果是帶子中斷的內(nèi)部中斷:發(fā)生后SUBSRCPND相應位置1,如果沒有被INTSUBMSK屏蔽,那么SRCPND相應位置1,等待進一步處理,幾個SUBSRCPND可能對應同一個SRCPND,對應表如下:

            SRCPNDSUBSRCPND
            INT_UART0INT_RXD0,INT_TXD0,INT_ERR0
            INT_UART1INT_RXD1,INT_TXD1,INT_ERR1
            INT_UART2INT_RXD2,INT_TXD2,INT_ERR2
            INT_ADCINT_ADC_S,INT_TC
            INT_CAMINT_CAM_C,INT_CAM_P
            INT_WDT_AC97INT_WDT,INT_AC97
            c如果是外部中斷:EINT0-EINT3發(fā)生后SRCPND相應位置1,如果沒有被INTMSK屏蔽,那么等待進一步處理。EINT4-EINT23發(fā)生后EINTPEND相應位置1,如果沒有被EINTMASK屏蔽,那么SRCPND相應位EINT4-7或EINT8-23置1,如果沒有被INTMSK屏蔽,等待進一步處理,幾個EINTPEND對應同一個SRCPND,對應表如下:

            SRCPNDEINTPEND

            EINT0EINT0

            EINT1EINT1

            EINT2EINT2

            EINT3EINT3

            EINT4-7EINT4-EINT4

            EINT8-23EINT8-EINT23

            三種中斷都等待進一步處理了。接下來從SRCPND往下看,看INTMSK。如果中斷被屏蔽了,就不用說了(注意:快中斷也能被屏蔽)。如果沒有被屏蔽,那么會進一步到INTMOD。如果是快中斷,那么直接出來,進入FIQ(即CPU進入快中斷模式處理)。如果是普通中斷,那么SRCPND可以有多為置1(FIQ只能有一個),這時就會經(jīng)過PRIORITY選出一個優(yōu)先級高的,然后把根據(jù)選出的中斷把INTPND相應位置1(注意:只能選出一個),進入IRQ,讓CPU處理。

            6.中斷的開啟。
            a.如果是不帶子中斷的內(nèi)部中斷,只需設置INTMSK,讓它不屏蔽中斷就可以了。

            b如果是帶子中斷的內(nèi)部中斷,需設置INTSUBMSK和INTMSK,讓它門不屏蔽中斷就可以了。

            c如果是外部中斷,對于EINT8-23需要設置EINTMASK和INTMSK。對于EINT0-EINT3只需設置INTMSK。

            7.中斷的清除。

            a.如果是不帶子中斷的內(nèi)部中斷,只需清除SRCPND,注意清除需位置1。

            b如果是帶子中斷的內(nèi)部中斷,需清除SRCPND和SUBSRCPND,注意先清除SUBSRCPND,再清除SRCPND。因為,如果你先清除SRCPND的話,然后在清除SUBSRCPND的過程中,SRCPND會以為又有中斷發(fā)生,又會置1。也就是說一次中斷會響應兩次。所以必須先掐斷源頭。

            c如果是外部中斷,對于EINT8-23需要清除EINTPEND和SRCPND(同樣注意順序)。對于EINT0-EINT3只需清除SRCPND。


            評論


            技術專區(qū)

            關閉