ARM中斷寄存器
2.外部中斷。24個(gè)外部中斷占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用這些腳做中斷輸入,則必須配置引腳為中斷,并且不要上拉。具體參考datesheet數據手冊。
本文引用地址:http://dyxdggzs.com/article/201611/316882.htm寄存器:EXTINT0-EXTINT2:三個(gè)寄存器設定EINT0-EINT23的觸發(fā)方式。
3.內部中斷。內部中斷有8個(gè)寄存器,下面逐一來(lái)看。
寄存器:SUBSRCPND:當一個(gè)中斷發(fā)生后,那么相應的位會(huì )被置1,表示一個(gè)中斷發(fā)生了。
4.各寄存器關(guān)系:
下面看圖說(shuō)明:
5.中斷過(guò)程。
a 如果是不帶子中斷的內部中斷:發(fā)生后SRCPND相應位置1,如果沒(méi)有被INTMSK屏蔽,那么等待進(jìn)一步處理。
b
SRCPND
INT_UART0
INT_UART1
INT_UART2
INT_ADC
INT_CAM
INT_WDT_AC97
c 如果是外部中斷: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,對應表如下:
SRCPND
EINT0
EINT1
EINT2
EINT3
EINT4-7
EINT8-23
三種中斷都等待進(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處理。
6.中斷的開(kāi)啟。
a.如果是不帶子中斷的內部中斷,只需設置INTMSK,讓它不屏蔽中斷就可以了。
b
c 如果是外部中斷,對于EINT8-23需要設置EINTMASK和INTMSK。對于EINT0-EINT3只需設置INTMSK。
7.中斷的清除。
a.如果是不帶子中斷的內部中斷,只需清除SRCPND,注意清除需位置1。
b
c 如果是外部中斷,對于EINT8-23需要清除EINTPEND和SRCPND(同樣注意順序)。對于EINT0-EINT3只需清除SRCPND。
評論