|
cortex-m3支持256個中端,其中包含了16個內(nèi)核中斷,240個外部中斷。stm32只有84個中斷,包括16個內(nèi)核中斷和68個可屏蔽中斷。stm32f103上只有60個中斷,f107上才有68個中斷。
中斷是stm32很基礎(chǔ)的一個功能,學(xué)會使用中斷,才可以更好的使用其他的外設(shè)。理解stm32的中斷,必須要先從stm32的中斷優(yōu)先級分組是怎么回事。要理解優(yōu)先級分組,就要先理解什么是先占優(yōu)先級,和次占優(yōu)先級。
先占優(yōu)先級的概念等同于51單片機(jī)中的中斷。假設(shè)有兩中斷先后觸發(fā),已經(jīng)在執(zhí)行的中斷先占優(yōu)先級如果沒有后觸發(fā)的中斷 先占優(yōu)先級更高,就會先處理先占優(yōu)先級高的中斷。也就是說又有較高的先占優(yōu)先級的中斷可以打斷先占優(yōu)先級較低的中斷。這是實(shí)現(xiàn)中斷嵌套的基礎(chǔ)。
次占優(yōu)先級只在同一先占優(yōu)先級的中斷同時觸發(fā)時起作用,先占優(yōu)先級相同,則優(yōu)先執(zhí)行次占優(yōu)先級較高的中斷。次占優(yōu)先級不會造成中斷嵌套。 如果中斷的兩個優(yōu)先級都一致,則優(yōu)先執(zhí)行位于中斷向量表中位置較高的中斷。
還需要注意的一點(diǎn)是 這里的中斷優(yōu)先級 高是指 是指是否更接近0級,0級優(yōu)先級是最高的。
那么最低的優(yōu)先級可以是多少?這就涉及了優(yōu)先級分組的概念。 stm32 通過一個中斷向量控制器(NVIC),來分配先占優(yōu)先級和次占優(yōu)先級的數(shù)量。
arm cortex-m3 內(nèi)核中擁有一個3位寬度的的PRIGROUP數(shù)據(jù)區(qū),用來指示一個8位數(shù)據(jù)序列中的小數(shù)點(diǎn)的位置從而表示中斷優(yōu)先級的分組。
舉個例子可以更好的理解: 如果PRIGROUP 數(shù)據(jù)位000 即為0 說明8位數(shù)據(jù)序列中小數(shù)位置在第1位的左邊 為xxxxxxx.y 用于表示中斷優(yōu)先級的分組的含義就是 用7位的數(shù)據(jù)寬度來表示 先占優(yōu)先級的數(shù)量 即為128 用1位的數(shù)據(jù)寬度來表示 次占優(yōu)先級數(shù)量 即為 2
所以arm cortex-m3中有2的三次方 即為8個優(yōu)先級分組 。
但是stm32中只有5個優(yōu)先級分組,表示方法略有不同,參照下表:
|
評分
-
查看全部評分
|