stm32中斷優先級
阿新 • • 發佈:2018-07-06
width 寫到 兩個 寫入 位置 app size 在那 table
編 號 | 分配情況 | |
7 | 0:4 | 無搶先式優先級,16 個子優先級 |
6 | 1:3 | 2 個搶先式優先級,8 個子優先級 |
5 | 2:2 | 4 個搶先式優先級,4 個子優先級 |
4 | 3:1 | 8 個搶先式優先級,2 個子優先級 |
3/2/1/0 | 4:0 | 16 個搶先式優先級,無子優先級 |
中斷分組
在一個系統中,通常只使用上面 5 種分配情況的一種,具體采用哪一種,需要在初始化
時寫入到一個 32 位寄存器 AIRC(Application Interrupt and Reset Control Register)
的第[10:8]這 3 個位中。這 3 個 bit 位有專門的稱呼:PRIGROUP。
比如你將 0x05(即上表中的編號)寫到 AIRC 的[10:8]中,那麽也就規定了你的系統中只
有 4 個搶先式優先級,相同的搶先式優先級下還可以有 4 個不同級別的子優先級。如下:
0 號搶先優先級 | 0 號子優先級 | |||
1 號搶先優先級 | 1 號子優先級 | |||
2 號搶先優先級 | 2 號子優先級 | |||
3 號搶先優先級 | 3 號子優先級 |
具體優先級的確定和嵌套規則。ARM cortex_m3(STM32)規定
a/ 只能高搶先優先級的中斷可以打斷低搶先優先級的中斷服務,構成中斷嵌套。
b/ 當 2(n)個相同搶先優先級的中斷出現,它們之間不能構成中斷嵌套,但 STM32 首先響應子優先級高的中斷。
c/ 當 2(n)個相同搶先優先級和相同子優先級的中斷出現,STM32 首先響應中斷通道所對應的中斷向量地址低的那個中斷(見 ROM0008,表 52)。
具體一點:
0 號搶先優先級的中斷,可以打斷任何中斷搶先優先級為非 0 號的中斷;1 號搶先優先級的中斷,可以打斷任何中斷搶先優先級為 2、3、4 號的中斷;……;構成中斷嵌套。
如果兩個中斷的搶先優先級相同,誰先出現,就先響應誰,不構成嵌套。如果一起出現(或掛在那裏等待),就看它們 2 個誰的子優先級高了,如果子優先級也相同,就看它們的中斷向量位置了。
stm32中斷優先級