下面是他吹的:
● 高達(dá)68中斷
●一個(gè)0-15的可編程每個(gè)中斷的優(yōu)先級(jí)。一個(gè)更高的層次對(duì)應(yīng)一個(gè)
低優(yōu)先級(jí)的,所以0級(jí)是最高的中斷優(yōu)先級(jí)
●等級(jí)和脈沖中斷信號(hào)的檢測(cè)
●動(dòng)態(tài)的優(yōu)先次序加以重訂的中斷
●成組的優(yōu)先級(jí)和次優(yōu)先領(lǐng)域的優(yōu)先級(jí)值分組
●中斷尾部鏈接
●外部非屏蔽中斷(NMI)
處理器自動(dòng)進(jìn)入異常堆棧其狀態(tài)和unstacks這種狀態(tài)上
異常退出,無(wú)需額外指令開(kāi)銷(xiāo)。這提供了低延遲的異常處理。
說(shuō)別的沒(méi)用底下這個(gè)表的重要程度在于不看他都很難理解寄存器啥意思,記住Table34
使用中要用這個(gè)表和底下的寄存器進(jìn)行對(duì)比,佐照。才會(huì)發(fā)現(xiàn)要的東西
看了這個(gè)表請(qǐng)不要問(wèn)這些寄存器都是那個(gè)中斷的啊?
就相當(dāng)于你看了一個(gè)坑你還向里跳一樣愚蠢!
上面的這個(gè)表非常重要。。。。。。。。。。。。!
1.
中斷設(shè)置啟用寄存器(NVIC_ISERx)
SETENA[31:0]:中斷使能位
Write:
0: No effect
1: Enable interrupt
Read:
0: Interrupt disabled
1: Interrupt enabled.
如果待處理的中斷使能,NVIC激活基于其優(yōu)先級(jí)的中斷。如果一個(gè)
中斷被禁止,聲稱(chēng)其中斷信號(hào)改變中斷狀態(tài)為掛起,
但從未激活了NVIC中斷,無(wú)論其優(yōu)先級(jí)
這才明白啥叫掛起,原來(lái)如此
2.
中斷關(guān)閉使能寄存器(NVIC_ICERx)
Bits 31:0 CLRENA[31:0]: Interrupt clear-enable bits.
Write:
0: No effect
1: Disable interrupt
Read:
0: Interrupt disabled
1: Interrupt enabled.
3.
中斷掛起開(kāi)啟寄存器(NVIC_ISPRx)
Bits 31:0 SETPEND[31:0]: Interrupt set-pending bits
Write:
0: No effect
1: Changes interrupt state to pending
Read:
0: Interrupt is not pending
1: Interrupt is pending
4.
中斷掛起關(guān)閉寄存器 (NVIC_ICPRx)
Bits 31:0 CLRPEND[31:0]: Interrupt clear-pending bits
Write:
0: No effect
1: Removes the pending state of an interrupt
Read:
0: Interrupt is not pending
1: Interrupt is pending
5.
中斷標(biāo)志寄存器(NVIC_IABRx)
Bits 31:0 ACTIVE[31:0]: Interrupt active flags
0: Interrupt not active
1: Interrupt active
6.
中斷優(yōu)先級(jí)寄存器(NVIC_IPRx)
這個(gè)圖表示17個(gè)字,每個(gè)字32位,每8位表示一個(gè)中斷的優(yōu)先級(jí)代碼,共68個(gè)中斷。
每個(gè)中斷的優(yōu)先級(jí)的值范圍是0~255,值越低,相應(yīng)的優(yōu)先級(jí)越高,值得注意的的是CORTEX-M3 只有16個(gè)優(yōu)先級(jí),所以當(dāng)設(shè)置優(yōu)先級(jí)時(shí)只有位【7:4】有效,而【3:0】保持為0.以此類(lèi)推。
總結(jié):中斷優(yōu)先級(jí)寄存器通俗的說(shuō)就是:
Cortex-m3不是有68個(gè)中斷嗎,那么把這68個(gè)中斷分成17組,一組是4個(gè)中斷,然后再把一個(gè)中斷賦予8位數(shù)據(jù)值,就是4*8=32位,正好一個(gè)“字”,也就是說(shuō)4個(gè)中斷要一個(gè)字,那么68個(gè)中斷要68/4=17個(gè)字,然后看下圖18,正好是IPR0~IPR16,17個(gè)字。
你分組為了啥?不就是要設(shè)置中斷優(yōu)先級(jí)嗎!那么他的值有多大?0~255,8bit嗎!但是問(wèn)題是這個(gè)處理器他沒(méi)有這么多的優(yōu)先級(jí),他有多少?只有0~15個(gè),咋辦?他是采取了表35的做法,一個(gè)中斷優(yōu)先級(jí)的值是8位,我屏蔽低4位,保留高4位,哎!正好,4位可以表示0~15之間的數(shù)據(jù),正好和我們要的不沖突,真好吻合。就是這個(gè)結(jié)果。我的理解是這樣的。。!
7.
軟件觸發(fā)中斷寄存器(NVIC_STIR)
INTID【8-0】:這個(gè)就是說(shuō)你可以設(shè)置軟件中斷的中斷號(hào),比如說(shuō)你向里面寫(xiě)入“000000011”就產(chǎn)生一個(gè)IRQ3的軟件中斷,但是這個(gè)中斷值是0~239之間的!!
附表:
完
于天津第四項(xiàng)目部 //