<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 淺談S3C2440的中斷寄存器及中斷過(guò)程

淺談S3C2440的中斷寄存器及中斷過(guò)程

作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò ) 收藏

S3C2440一共有60個(gè)中斷源,其中有15個(gè)子中斷源,它們與SUBSRCPND寄存器中的每一位相對應,其他45個(gè)中斷源與SRCPND中的每一位相對應。要注意的是EINT4~7對應的是同一位SRCPND[4],而EINT8~23對應的也是SRCPND[5]一位。

1 S3C2440的中斷寄存器

中斷分兩大類(lèi):外部中斷和內部中斷。
1.1 外部中斷寄存器
24個(gè)外部中斷占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用這些腳做中斷輸入,則必須配置引腳為中斷,并且不要上拉。具體可參考datesheet數據手冊。
寄存器:
EXTINT0-EXTINT2:分別設置EINT0—EINT7、EINT8—EINT15、EINT16—EINT23的觸發(fā)方式(高電平觸發(fā)、低電平觸發(fā)、下降沿觸發(fā)、上升沿觸發(fā))。
EINTFLT0-EINTFLT3:控制濾波時(shí)鐘和濾波寬度。
EINTPEND:這個(gè)是中斷掛起寄存器,清除時(shí)要寫(xiě)1,后面還有幾個(gè)是寫(xiě)1清除。當一個(gè)外部中斷(EINT4-EINT23)發(fā)生后,那么相應的位會(huì )被置1。為什么沒(méi)有EINT0-EINT3,因為它們分別由SRCPND寄存器的后4位控制。
EINTMASK:這個(gè)簡(jiǎn)單,是屏蔽中斷用的,也就是說(shuō)位為1時(shí),此次中斷無(wú)效。
1.2 內部中斷寄存器
內部中斷有8個(gè)寄存器。
寄存器:
SUBSRCPND:當一個(gè)中斷發(fā)生后,那么相應的位會(huì )被置1,表示一個(gè)中斷發(fā)生了。
INTSUBMSK:與上一個(gè)是一樣的,中斷屏蔽寄存器。
SRCPND:當一個(gè)中斷發(fā)生后,那么相應的位會(huì )被置1,表示一個(gè)或一類(lèi)中斷發(fā)生了。
INTMSK:用來(lái)屏蔽SRCPND寄存器所標識的中斷。但只能屏蔽IRQ中斷,不能屏蔽FIQ中斷。
INTMOD:當INTMOD中某位被設置為1時(shí),它對應的中斷被設為FIQ,CPU將進(jìn)入快速中斷模式。
PRIORITY:用于設置IRQ中斷的優(yōu)先級。具體使用方法可參考芯片手冊。
INTPND:中斷優(yōu)先級仲裁器選出優(yōu)先級最高中斷后,這個(gè)中斷在INTPND寄存器中的相應位被置1,隨后,CPU進(jìn)入中斷模式處理它。同一時(shí)間內,此寄存器只有一位被置1。
INTOFFSET:用來(lái)表示INTPND寄存器中哪位被置1了,即記錄INTPND中位[x]為1的位x的值。清除INTPND、SRCPND時(shí)自動(dòng)清除。
1.3 各寄存器關(guān)系:
圖1 各中斷寄存器間的關(guān)系

2 中斷過(guò)程

2.1 內部中斷過(guò)程
a 如果是不帶子中斷的內部中斷:發(fā)生后SRCPND相應位置1,如果沒(méi)有被INTMSK屏蔽,那么等待進(jìn)一步處理。
b 如果是帶子中斷的內部中斷:發(fā)生后SUBSRCPND相應位置1,如果沒(méi)有被INTSUBMSK屏蔽,那么SRCPND相應位置1,等待進(jìn)一步處理,幾個(gè)SUBSRCPND可能對應同一個(gè)SRCPND,對應表如下:
2.2 外部中斷過(guò)程
a 如果是外部中斷:EINT0-EINT3發(fā)生后SRCPND相應位置1,如果沒(méi)有被INTMSK屏蔽,那么等待進(jìn)一步處理。EINT4-EINT23發(fā)生后EINTPEND相應位置1,如果沒(méi)有被EINTMASK屏蔽,那么SRCPND相應位EINT4-7 或EINT8-23置1,如果沒(méi)有被INTMSK屏蔽,等待進(jìn)一步處理,幾個(gè)EINTPEND對應同一個(gè)SRCPND,對應表如下:

三種中斷都等待進(jìn)一步處理了。接下來(lái)從SRCPND往下看,看INTMSK。如果中斷被屏蔽了,就不用說(shuō)了(注意:快中斷也能被屏蔽)。如果沒(méi)有被屏蔽,那么會(huì )進(jìn)一步到INTMOD。如果是快中斷,那么直接出來(lái),進(jìn)入FIQ(即CPU進(jìn)入快中斷模式處理)。如果是普通中斷,那么SRCPND可以有多為置1(FIQ只能有一個(gè)),這時(shí)就會(huì )經(jīng)過(guò)PRIORITY選出一個(gè)優(yōu)先級高的,然后把根據選出的中斷把INTPND相應位置1(注意:只能選出一個(gè)),進(jìn)入IRQ,讓CPU處理。
2.3 中斷的開(kāi)啟
a.如果是不帶子中斷的內部中斷,只需設置INTMSK,讓它不屏蔽中斷就可以了。
b 如果是帶子中斷的內部中斷,需設置INTSUBMSK和INTMSK,讓它們不屏蔽中斷就可以了。
c 如果是外部中斷,對于EINT8-23需要設置EINTMASK和INTMSK。對于EINT0-EINT3只需設置INTMSK。
2.4 中斷的清除
a.如果是不帶子中斷的內部中斷,只需清除SRCPND,注意清除需位置1。
b 如果是帶子中斷的內部中斷,需清除SRCPND和SUBSRCPND,注意先清除SUBSRCPND,再清除SRCPND。因為,如果你先清除SRCPND的話(huà),然后在清除SUBSRCPND的過(guò)程中,SRCPND會(huì )以為又有中斷發(fā)生,又會(huì )置1。也就是說(shuō)一次中斷會(huì )響應兩次。所以必須先掐斷源頭。
c 如果是外部中斷,對于EINT8-23需要清除EINTPEND和SRCPND(同樣注意順序)。對于EINT0-EINT3只需清除SRCPND。



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>