STM32 NVIC基本理解

2021-08-21 20:26:24 字數 1490 閱讀 3578

nvic兩個屬性:搶占屬性、響應屬性(編號越小,優先順序越高)

nvic_irqchannelsubpriority 引數配置例子:三個中斷向量a、b、c

中斷向量名稱

搶占優先順序

響應優先順序a0

0b10

c11

此處中斷a可以打斷中斷b,但b不能打斷c。

兩個要點:

1、若兩個中斷的搶占優先順序和響應優先順序相同,則哪乙個先發生就先執行。

2、不同的搶占優先順序,高搶占優先順序可以打斷正在進行低搶占優先順序

相同的搶占優先順序,高響應優先順序不可以打斷正在進行低響應優先順序

nvic的優先組

0-1總共五個分配方式:

​ 第0 組: 所有4 位用來配置響應優先順序。即16 種中斷向量具有都不相同的響應優先順序。

​ 第1 組:最高1 位用來配置搶占優先順序,低3 位用來配置響應優先順序。表示有2 種級別的搶占優先順序(0 級,1 級),有8 種響應優先順序,即在16 種中斷向量之中,有8 種中斷,其搶占優先順序都為0 級,而它們的響應優先順序分別為0~7,其餘8 種中斷向量的搶占優先順序則都為1 級,響應優先級別分別為0~7

第2 組:2 位用來配置搶占優先順序,2 位用來配置響應優先順序。即4 種搶占優先順序,4 種響應優先順序。

第3 組:高3 位用來配置搶占優先順序,最低1 位用來配置響應優先順序。即有8 種搶占優先順序,2 種響應2 優先順序。

第4 組:所有4 位用來配置搶占優先順序,即nvic 配置的16 種中斷向量都是只有搶占屬性,沒有響應屬性。

示例**:

//配置nvic:設定nvic中斷分組2:2位搶占優先順序,2位響應優先順序

nvic_prioritygroupconfig(nvic_prioritygroup_2);

//定義nvic中斷結構體

nvic_inittypedef nvic_initstructure;

//使能***xx_irqn所在的中斷通道

nvic_initstructure.nvic_irqchannel = ***xx_irqn;

//設定搶占優先順序

nvic_initstructure.nvic_irqchannelpreemptionpriority = 0x02;

//設定響應優先順序

nvic_initstructure.nvic_irqchannelsubpriority = 0x03;

//使能中斷通道

nvic_initstructure.nvic_irqchannelcmd = enable;

//初始化中斷結構體

nvic_init(&nvic_initstructure);

stm32f4中斷管理與此次類似,這裡只是介紹基本配置和優先順序高低問題

對STM32 NVIC的理解

整合了網上幾篇部落格,再加上自己的理解 nvic全稱為 nest vector interrupt controller,人們一般稱之為 巢狀中斷向量控制器 是用來管理中斷巢狀的,核心任務就是在於其優先順序的管理。nvic 給每個中斷賦予先佔優先順序和次佔優先順序。它們的關係描述如下 1 擁有較高先...

STM32 NVIC中斷優先順序的理解

我們在學習stm32中串列埠啊,定時器啊等等,都會遇到設定相應的優先順序。下面來揭下這個神秘的面具。我們知道優先順序有兩種 搶占式優先順序preemptionpriority 和 子優先順序 響應優先順序 subpriority。具有高優先順序的中斷可以在低優先順序正在執行時打斷其執行,然後執行自己...

stm32 NVIC中段優先順序

nvic stm32f103有60個遮蔽中斷 管理辦法 首先對中斷進行分組0 4,在每個中斷設定乙個搶占優先順序和乙個響應優先順序值。在scb aircr中配置 在一般的情況下是設定的是2組,由兩個搶占優先順序和兩個響應優先順序分配。搶占優先順序和響應優先順序區別 1 搶占優先順序高的可以打斷搶占優...