ARM中斷寄存器
2.外部中斷。24個外部中斷占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用這些腳做中斷輸入,則必須配置引腳為中斷,并且不要上拉。具體參考datesheet數(shù)據(jù)手冊。
本文引用地址:http://2s4d.com/article/201611/316882.htm寄存器:EXTINT0-EXTINT2:三個寄存器設(shè)定EINT0-EINT23的觸發(fā)方式。
3.內(nèi)部中斷。內(nèi)部中斷有8個寄存器,下面逐一來看。
寄存器:SUBSRCPND:當(dāng)一個中斷發(fā)生后,那么相應(yīng)的位會被置1,表示一個中斷發(fā)生了。
4.各寄存器關(guān)系:
下面看圖說明:
5.中斷過程。
a 如果是不帶子中斷的內(nèi)部中斷:發(fā)生后SRCPND相應(yīng)位置1,如果沒有被INTMSK屏蔽,那么等待進(jìn)一步處理。
b
SRCPND
INT_UART0
INT_UART1
INT_UART2
INT_ADC
INT_CAM
INT_WDT_AC97
c 如果是外部中斷:EINT0-EINT3發(fā)生后SRCPND相應(yīng)位置1,如果沒有被INTMSK屏蔽,那么等待進(jìn)一步處理。EINT4-EINT23發(fā)生后EINTPEND相應(yīng)位置1,如果沒有被EINTMASK屏蔽,那么SRCPND相應(yīng)位EINT4-7 或EINT8-23置1,如果沒有被INTMSK屏蔽,等待進(jìn)一步處理,幾個EINTPEND對應(yīng)同一個SRCPND,對應(yīng)表如下:
SRCPND
EINT0
EINT1
EINT2
EINT3
EINT4-7
EINT8-23
三種中斷都等待進(jìn)一步處理了。接下來從SRCPND往下看,看INTMSK。如果中斷被屏蔽了,就不用說了(注意:快中斷也能被屏蔽)。如果沒有被屏蔽,那么會進(jìn)一步到INTMOD。如果是快中斷,那么直接出來,進(jìn)入FIQ(即CPU進(jìn)入快中斷模式處理)。如果是普通中斷,那么SRCPND可以有多為置1(FIQ只能有一個),這時(shí)就會經(jīng)過PRIORITY選出一個優(yōu)先級高的,然后把根據(jù)選出的中斷把INTPND相應(yīng)位置1(注意:只能選出一個),進(jìn)入IRQ,讓CPU處理。
6.中斷的開啟。
a.如果是不帶子中斷的內(nèi)部中斷,只需設(shè)置INTMSK,讓它不屏蔽中斷就可以了。
b
c 如果是外部中斷,對于EINT8-23需要設(shè)置EINTMASK和INTMSK。對于EINT0-EINT3只需設(shè)置INTMSK。
7.中斷的清除。
a.如果是不帶子中斷的內(nèi)部中斷,只需清除SRCPND,注意清除需位置1。
b
c 如果是外部中斷,對于EINT8-23需要清除EINTPEND和SRCPND(同樣注意順序)。對于EINT0-EINT3只需清除SRCPND。
評論