天天看點

NVIC嵌套向量中斷控制器庫函數程式(以USART1為例)優先級分組

NVIC(Nested Vectored Interrupt Controller):嵌套向量中斷控制器

庫函數程式(以USART1為例)

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設定優先級分組為2
           
//Usart1 NVIC 配置
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//搶占優先級為3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//響應優先級為3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
NVIC_Init(&NVIC_InitStructure);	//根據設定的參數初始化NVIC寄存器
           

優先級分組

  中斷優先級寄存器IP為8位,原則上可為外部中斷設定的優先級為0~255,實際上隻用到了高4位就夠用了,這高四位又被分為搶占式優先和響應式優先兩種,因為隻用到了高四位,是以一共有5中分組,NVIC_PriorityGroup_0~4,每個組配置設定的搶占式優先和響應式優先非常容易記混淆,我是這樣記得:幾組就是給搶占式優先配置設定了幾個位寬,比如NVIC_PriorityGroup_1就是1位給搶占式優先,可以取0~1,3位給響應式優先,可以取0~7。

中斷優先有下面幾個規則:

1、優先級号越低者,優先級越高,PreemptionPriority=3的優先級就低于PreemptionPriority=0

2、隻有搶占式有限可以中斷嵌套,搶占式優先級高的可以打斷搶占式優先級低的中斷

3、搶占式優先級與響應式優先級都相同的,則比較它們的硬體中斷編号,中斷編号越小,優先級越高。(硬體中斷編号從中斷向量表當中檢視)

繼續閱讀