找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4499|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32 ARM—M3內(nèi)核的NVIC中斷控制器簡(jiǎn)表

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82781 發(fā)表于 2015-6-23 14:21 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
NVIC嵌套向量中斷控制器
本文當(dāng)由個(gè)人編制,方便查閱使用,王均偉天津第四項(xiàng)目部宿舍
這個(gè)控制器和內(nèi)核捆綁在一起,是控制中斷的。
下面是他吹的:
●     高達(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ú)需額外指令開銷​​。這提供了低延遲的異常處理。
說(shuō)別的沒用底下這個(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è)
中斷被禁止,聲稱其中斷信號(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.
中斷掛起開啟寄存器(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.以此類推。
總結(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è)處理器他沒有這么多的優(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)
INTID8-0:這個(gè)就是說(shuō)你可以設(shè)置軟件中斷的中斷號(hào),比如說(shuō)你向里面寫入“000000011”就產(chǎn)生一個(gè)IRQ3的軟件中斷,但是這個(gè)中斷值是0~239之間的!
附表:


     于天津第四項(xiàng)目部           //





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表