複習下st的NVIC

NVIC全稱Nested vectored interrupt controller,即嵌套向量中斷控制器,用來決定中斷的優先級。

NVIC在 ARM Conrtex-M 內核中,用一個 8 位的寄存器來配置,總共可以配置2^8=256級中斷,但是 ST 公司在生產 STM32 的時候,發現一個小小的單片機根本用不了這麼多,純屬浪費,所以將該寄存器的低 4 位全部置0,只使用高 4 位來配置,這樣一來 STM32 就只有2^4=16級中斷啦。

簡化爲16級中斷後,ST發現 STM32 內部這麼豐富的外設,還是不方便配置,乾脆人工給這4位來個分組,劃分出了5個分組:

優先級分組  搶佔優先級佔的位數 子優先級佔的位數
NVIC_PriorityGroup_0  0 bit  4 bit
NVIC_PriorityGroup_1  1 bit 3 bit
NVIC_PriorityGroup_2 2 bit 2 bit
NVIC_PriorityGroup_3   3 bit 1 bit
NVIC_PriorityGroup_4  4 bit  0 bit

再次強調一下,這5種中斷分組規則是人爲的,用哪種規則,之後設置具體的優先級時對應就行,STM32默認使用的規則是 NVIC_PriorityGroup_0 。

STM32 的CPU判斷優先級的方法如下:

先判斷搶佔優先級,數字越小,優先級越高;
若搶佔優先級相同,判斷子優先級,同樣,數字越小,優先級越高;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章