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