中断NVIC优先级的理解

发布者:MysticDreamer最新更新时间:2024-08-12 来源: cnblogs关键字:中断  NVIC  优先级 手机看文章 扫描二维码
随时随地手机看文章

使用NVIC时,是为了多个中断分个优先次序

1.进行中断分组

分组函数:void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);

假设,要使中断分组为2

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

 

2.设置中断的优先级别(抢占优先级和子优先级)

中断初始化函数:void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)

假设,要设置串口1的中断,同时设置抢占优先级为1,子优先级为2


NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//串口 1 中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;// 抢占优先级为 1

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;// 子优先级位 2

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道使能

NVIC_Init(&NVIC_InitStructure);  //根据上面指定的参数初始化 NVIC 寄存器


对于STM32 NVIC中断优先级管理

由于我的芯片STM32F103,里面只有60个可屏蔽中断,也就是说只用了ISER[0]和ISER[1](CM3内核ISER共有8个,即ISER[8])

同时,对于中断分组


例如组设置为 3,那么此时所有的 60 个中断,每个中断的中断优先寄存器的高四位中的最高 3 位是抢占优先级,低 1 位是响应优先级。每个中断,你可以设置抢占优先级为 0~7,响应优先级为 1 或 0。抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高。

个人理解:由数据的第10~8位确定第几组,后由第7~4位确定抢占优先级和响应优先级,数值越小,优先级越高。

 

这时需要注意两点:

1、如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;

2、高优先级的抢占优先级是可以打断正在进行的低抢占优先级

中断的。而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断;

假定设置中断优先级组为 2,然后设置中断 3(RTC 中断)的抢占优先级为 2,响应优先级为 1。中断 6(外部中断 0)的抢占优先级为 3,响应优先级为 0。中断 7(外部中断 1)的抢占优先级为 2,响应优先级为 0。那么这 3 个中断的优先级顺序为:中断 7>中断 3>中断 6。


关键字:中断  NVIC  优先级 引用地址:中断NVIC优先级的理解

上一篇:STM32串口的理解
下一篇:端口复用的理解

推荐阅读最新更新时间:2026-03-20 11:48

STM32-NVIC中断优先级分组-中断优先级设置
STM32-中断优先级管理NVIC 1.NVIC中断优先级分组 NVIC的全称是Nested vectoredinterrupt controller,即嵌套向量中断控制器。STM32F中文参考手册中搜索向量表可以找到相应的中断说明。 CM4/CM7 内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。 STM32F4/F7并没有使用CM4内核的全部东西,而是只用了它的一部分。 STM32F40xx/STM32F41xx总共有92个中断。10个内核中断,82个可屏蔽中断。 STM32F42xx/STM32F43xx则总共有97个中断。10个内核中断,87个可屏蔽中断。 STM32F
[单片机]
STM32 NVIC中断优先级:抢占优先级&响应优先级区别
首先,对STM32中断进行分组,组0~4。同时,对每个中断设置一个抢占优先级和一个响应优先级值。 分组配置是在寄存器SCB- AIRCR中配置: 抢占优先级 & 响应优先级区别: 1. 高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。 2. 抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。 3. 抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个 先执行。 4. 如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先 执行; 等级越低,优先级越高。
[单片机]
STM32 <font color='red'>NVIC</font><font color='red'>中断</font><font color='red'>优先级</font>:抢占<font color='red'>优先级</font>&响应<font color='red'>优先级</font>区别
STM32的外部中断EXTI及NVIC中断优先级介绍
一、什么是中断? 打断当前的操作,执行中断需要做的事情。 中断的作用:中断机制不仅赋予了系统处理意外情况的能力,就可以“同时”完成多个任务,提高了并发“处理”能力。 和线程的区别:线程是同时执行多个任务,中断是停下来去执行其他的(注意优先级),执行完了再回来执行, 定时器才相当于线程,定一个时间,每到这个时间执行一次 二、中断概述 STM32F4并没有使用CM4内核的全部东西,而是只用了它的一部分。 STM32F40xx/STM32F41xx总共有92个中断 STM32F42xx/STM32F43xx则总共有96个中断 STM32F40xx/STM32F41xx的92个中断里面,包括10个
[单片机]
STM32的外部<font color='red'>中断</font>EXTI及<font color='red'>NVIC</font><font color='red'>中断</font><font color='red'>优先级</font>介绍
STM32 NVIC中断优先级管理
CM3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。但STM32并没有使用CM3内核的全部东西,而是只用了它的一部分。STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。而我们常用的就是这68个可屏蔽中断,但是STM32的68个可屏蔽中断,在STM32F103系列上面,又只有60个(在107系列才有68个)。因为我们开发板选择的芯片是STM32F103系列的所以我们就只针对STM32F103系列这60个可屏蔽中断进行介绍。 在MDK内,与NVIC相关的寄存器,MDK为其定义了如下的结构体: typedef struct {   __IO
[单片机]
STM32 之 NVIC(中断向量、优先级) 简述
一、背景 需要使用STM32的CAN进行通信,经过一系列配置后,已可正常收发,还剩下一个CAN通信的错误处理。可错 误中断使能寄存器已经配置使能了,出错后就是无法进入 CAN1_SCE_IRQHandler 中断。(让CAN通信出错的的 办法很简单,将 CAN_H 与 CAN_L 直接短接,然后让其发送数据,正常情况下,就会触发错误中断了,发送错 误寄存器会瞬间加至 128 ,如果继续发,每发一次,发送错误计数器会+8,直到256,然后CAN节点即会进入离 线状态,也就是 Bus off 状态)。 一步一步查,才发现, CAN1_SCE_IRQn 的M3内核中断没有开,也就是NVIC相关配置。对于N
[单片机]
STM32 之 <font color='red'>NVIC</font>(<font color='red'>中断</font>向量、<font color='red'>优先级</font>) 简述
STM32F4——NVIC中断优先级及外部中断
NVIC中断优先级 一、简介: CM4内核可以支持256个中断,包括16个内核中断和240个外部中断,256级的可编程中断设置。对于STM32F4没有用到CM4内核的所有东西,只是用到了一部分,对于STM32F40和41系列共有92个中断,其中有10个内核中断和82个可屏蔽中断,常用的为82个可屏蔽中断。 二、相关寄存器: ISER 中断使能寄存器组,用来使能中断,每一位控制一个中断,由于上面已经说明了控制82个可屏蔽的中断,因此利用ISER 这三个32位寄存器就够了。一下的几个寄存器同理。 ICER 中断除能寄存器组,用来消除中断。 ISPR 中断挂起控制寄存器组,用来挂起中断。 ICPR 中断解挂
[单片机]
STM32F4——<font color='red'>NVIC</font><font color='red'>中断</font><font color='red'>优先级</font>及外部<font color='red'>中断</font>
LPC824-中断系统NVIC
LPC824的中断系统非常强大,要用好中断,就必须先了解LPC824的整个中断系统。下面来讨论一下NVIC中断系统。 在LPC8xx系列处理器中,有一个部分被称为“私有外设总线”(Private peripheral bus),它位于Memory map中地址为0xE0000000~0xE0100000的地方,包含有下表中的几个核心外设。 其中的NVIC(Nested Vectored Interrupt Contorller)就是中断系统,被称为“内嵌套向量中断控制器”。它与处理器内核紧密耦合,可实现低中断延迟及对新中断的有效处理。 它具有以下特征: 拥有32路向量中断;每个中断的优先级均可编程设置为0~192(步长64)
[单片机]
LPC824-<font color='red'>中断</font>系统<font color='red'>NVIC</font>
【STM32】3—EXIT中断 & NVIC配置
0 实验预期效果 ① 上电复位时LED处于熄灭状态; ② 按下KEY1,LED点亮; ③ 按下KEY2,LED熄灭; 1 相关原理图 2 软件配置 配置PE3引脚和PE4引脚为外部中断触发引脚 配置触发中断种类 ① 开启下降沿触发中断:即在按下按键时电平由高变为低时触发; ② 开启上升沿触发中断:即在按下按键后松开时电平由低变为高时触发; ③ 开启下降沿上升沿都触发中断:即在按下时触发,松开时再次触发。 此处选择第一种:开启下降沿触发中断。 配置选择开启上拉电阻 配置NVIC设置中断优
[单片机]
【STM32】3—EXIT<font color='red'>中断</font> & <font color='red'>NVIC</font>配置
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved