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