NXP NVIC(嵌套向量中断管理器) 优先级分组

【STM32】STM32F4 NVIC中断优先及EXTI外设库函数配置 什么是NVIC?即嵌套向量中断控制器(Nested Vectored Interrupt Controller)。STM32的中有一个强大而方便的NVIC,它是属于Cortex内核的器件,不可屏蔽中断 (NMI)和外部中断都由它来处理,SYSTICK不是由 NVIC来控制的。CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。STM32F4并没有使用CM4内核的全部东西,而是只用了它的一部分。 阅读详情

NXP NVIC(嵌套向量中断管理器) 优先级分组
Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:

第0组:所有4位用于指定响应优先级
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级
第4组:所有4位用于指定抢占式优先级

可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()(在CM0中是NVIC_SetPriorityGrouping())选择使用哪种优先级分组方式,这个函数的参数有下列5种:

NVIC_PriorityGroup_0 => 选择第0组
NVIC_PriorityGroup_1 => 选择第1组
NVIC_PriorityGroup_2 => 选择第2组
NVIC_PriorityGroup_3 => 选择第3组
NVIC_PriorityGroup_4 => 选择第4组

接下来就是指定中断源的优先级,下面以一个简单的例子说明如何指定中断源的抢占式优先级和响应优先级:

// 选择使用优先级分组第1组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

// 使能EXTI0中断
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定抢占式优先级别1

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

// 使能EXTI9_5中断
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定响应优先级别1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

要注意的几点是:
1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果;
2)抢占式优先级别相同的中断源之间没有嵌套关系;
3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。

STM32的抢占优先级和响应优先级
中断优先级寄存器NVIC_IPRx,本寄存器宽度为8位,原则上每个外部中断可配置的优先级为0~255,实际上精简了,只用到了它的高4位。这4位,又被分成了抢占优先级和响应优先级两组:
(1)抢占属性:就是打断其它正在执行的中断,这时就出现了中断嵌套。抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。
(2)响应属性:如果两个中断的抢占优先级相同,并且他们同时申请中断,那么该怎么办呢?则响应属性较高的中断优先处理。响应属性由抢占属性由NVIC_IRQChannelSubPriority 的参数配置。

当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。

总结:抢占式优先级>响应优先级>中断表中的排位顺序

不人工设置中断优先级,那么将按芯片的默认优先级响应,只有当默认优先级不能满足要求时才需要人工设置中断优先级。

在有实时操作系统时, 为什么不用设置中断抢占优先级与中断响应优先级?
因为中断处理函数分两种处理形式
1.线程同步量的释放
2.非常短时间的处理
在线程同步量的释放中, 会获得下一个被调度的线程(遵从优先级调度), 并进行线程调度.
所以中断抢占优先级的配置遂转化为线程优先级的配置

STM32 NVIC中断优先级管理 CM3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。但STM32并没有使用CM3内核的全部东西,而是只用了它的一部分。STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。而我们常用的就是这68个可屏蔽中断,但是STM32的68个可屏蔽中断,在STM32F103系列上面,又只有60个(在107系列才有68个 阅读详情

相关推荐

NVIC抢占优先级总结

NVIC抢占优先级总结

qq_44757503的博客 1396

STM32中断分组配置NVIC_PriorityGroup,移植操作系统需需注意NVIC_PriorityGroup_4

STM32中断分组配置NVIC_PriorityGroup,移植操作系统需需注意NVIC_PriorityGroup_4

qq_38295600的博客 5974

STM32 NVIC中断机制深度解析:向量表、优先级与EXTI实战

中断是嵌入式实时系统的核心响应机制,其本质是硬件触发的确定性事件处理流程。基于ARM Cortex-M架构的NVIC(嵌套向量中断控制器)通过硬件向量跳转、零等待寄存器访问和标准化异常模型,显著降低中断延迟并提升可移植性。其核心依赖中断向量表——一张由硬件解析的函数指针数组,配合VTOR实现动态重定位;同时采用抢占优先级与子优先级二维模型,支撑复杂实时调度。在STM32等Cortex-M微控制器中,NVIC与EXTI(外部中断)深度协同,使任意GPIO均可作为中断源,广泛应用于按键检测、传感器触发、工业控制

weixin_42591413的博客 423

STM32的NVIC中断分组

配置抢占优先级和子优先级,它们合并成的4bit数字的数值越小,优先级越高。 子优先级不支持中断嵌套,就是排队。 高抢占式优先级的中断可以在具有低抢占式优先级的中断服务程序执行过程中被响应,即中断嵌套,优先权高的先执行。 管脚在一组的中断,如何设置呢? ...

sjh2100的博客 4353

ARM Cortex-M0 NVIC与SCB实战:中断管理与系统控制详解

中断机制是嵌入式系统的核心概念,它允许CPU及时响应外部事件,实现实时处理。其原理基于硬件中断控制器管理中断请求的优先级、状态与响应流程。掌握中断技术对开发高效可靠的嵌入式应用具有重要价值,广泛应用于实时数据采集、通信接口处理、低功耗控制等场景。本文聚焦于ARM Cortex-M0内核的NVIC(嵌套向量中断控制器)和SCB(系统控制块),深入解析中断状态机(挂起、活跃、非活跃)的完整流转过程,并结合电平触发中断的“中断风暴”等常见陷阱,提供从寄存器配置到CMSIS函数调用的实战指南。同时,详解SCB在系统

weixin_30876945的博客 318

STM32F407中断机制深度解析:NVIC、向量表与优先级分组

中断是嵌入式实时系统的核心响应机制,其本质是CPU对异步事件的硬件级快速跳转与服务。基于ARM Cortex-M4架构的中断原理,依赖嵌套向量中断控制器(NVIC)实现抢占、向量化和动态优先级调度;中断向量表作为硬件与软件的交汇点,固化了异常与外设中断的服务入口地址映射关系。技术价值在于显著降低响应延迟、支持多任务协同与确定性实时行为。典型应用场景包括串口数据接收、定时器触发、ADC采样及GPIO按键唤醒等。本文以STM32F407为载体,深入剖析NVIC寄存器配置、中断优先级分组(PRIGROUP)机制及

weixin_32005771的博客 67

【STM32】NVIC(嵌套向量中断控制器)

NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器)适用于等 ARM 处理器,广泛用于 STM32、ESP32、GD32、NXP 等 MCU 中,它用于管理和控制中断,是ARM Cortex-M 系列微控制器的核心外设之一。NVIC 负责中断优先级管理、嵌套中断处理和中断向量跳转,使 Cortex-M 处理器能够高效地响应中断请求。NVIC 主要功能1. 支持多个中断源(STM32F103 系列最多支持 60 个)

猫猫的小茶馆 2721

STM32F103中断体系详解:NVIC优先级与嵌套机制

中断是嵌入式系统实现硬件事件实时响应的核心机制,其本质是CPU在执行主程序时对异步信号的可控跳转与上下文切换。基于ARM Cortex-M3内核的STM32F103,通过NVIC(嵌套向量中断控制器)实现标准化中断管理,支持抢占优先级与响应优先级构成的二维优先级模型,显著区别于传统单片机的线性中断结构。该模型赋予开发者精细控制中断嵌套、排队与响应时序的能力,直接支撑工业控制、电机驱动等对确定性时延敏感的应用场景。理解NVIC寄存器配置、优先级分组(如Group 2)、中断向量表映射及HAL库封装逻辑,是构建

weixin_31486261的博客 57

ARM Cortex-M4 NVIC与SCB寄存器深度解析:中断管理与故障调试实战

中断是嵌入式系统实现实时响应的核心机制,其本质是处理器暂停当前任务、转去处理紧急事件的硬件特性。在ARM Cortex-M架构中,嵌套向量中断控制器(NVIC)负责统一管理和调度所有中断请求,通过优先级分组机制实现抢占式响应与嵌套处理,这是保障系统实时性的关键。系统控制块(SCB)则掌管着处理器核心的配置与异常处理,例如通过配置故障状态寄存器(CFSR)和故障地址寄存器(MMFAR/BFAR)来精准定位HardFault等系统错误的根源,这对于提升系统稳定性和可靠性至关重要。深入理解NVIC的优先级管理和S

weixin_30342363的博客 355

STM32F407 NVIC中断机制深度解析:优先级分组与向量表实战

嵌套向量中断控制器(NVIC)是ARM Cortex-M系列微控制器实现确定性实时响应的核心硬件模块,其通过抢占优先级与响应优先级的双重维度管理中断调度,支撑高可靠嵌入式系统设计。原理上,NVIC将8位优先级寄存器按PRIGROUP配置动态划分为抢占位与子优先位,结合中断向量表实现硬件自动跳转,显著降低中断延迟。该机制赋予开发者对实时性、嵌套深度与响应顺序的精细控制能力,技术价值体现在确定性调度、低开销上下文切换与跨平台可移植性。典型应用场景涵盖电机控制、工业通信(如UART/CAN)、传感器数据采集及RT

weixin_35756373的博客 61

NVIC与中断向量表:ARM Cortex-M嵌入式中断核心原理

中断是嵌入式实时系统的关键机制,其本质是CPU对外部异步事件的确定性响应。在ARM Cortex-M架构中,NVIC(嵌套向量中断控制器)通过硬件向量化和优先级分组机制,实现了纳秒级响应与多级抢占调度,显著提升系统实时性与功能安全性。其中,中断向量表作为启动与异常处理的静态导航结构,统一定义了复位、HardFault、SVC及外部中断等入口地址,构成固件运行的底层契约。NVIC标准化设计使STM32、GD32、NXP LPC等主流Cortex-M芯片具备一致的中断编程模型,大幅降低跨平台开发门槛,并为Fre

weixin_28746213的博客 48

ARM Cortex-M4 NVIC与SCB深度解析:中断管理与系统控制实战指南

中断是嵌入式系统实现实时响应的核心机制,其本质是处理器暂停当前任务、转去处理紧急事件的硬件特性。在ARM Cortex-M架构中,嵌套向量中断控制器(NVIC)通过硬件支持的优先级抢占与嵌套机制,为中断管理提供了确定性低延迟的解决方案。系统控制块(SCB)则作为处理器的指挥中枢,负责异常配置、电源管理与系统状态监控,共同保障了系统的稳定与高效。理解NVIC的优先级分组、中断向量表重定位以及SCB的HardFault调试机制,对于开发复杂实时任务、实现精细功耗控制至关重要。本文以**STM32**和**ARM

weixin_30517215的博客 331

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标 1 超级指标 指标公式:买卖提示非常明显(适合通达信) 指标源码如下: M:3 100 60 N 3 100 30 散户线: 100*(HHV(HIGH,M)-CLOSE)/(HHV(HIGH,M)-LLV(LOW,M));RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,5,1); D:=SMA(K,3,1); J:=3*K-2*D;主力

m0_60244077的博客 3万+

关于NVIC使用以及M0和M3的异同

前言:目标 1NVIC的示意图和核心点介绍 2 可嵌套向量中断控制器NVIC如何使用 3 M0和M3的操作有什么异同 4 中断向量表的位置 5 系统复位时(或者不设置中断时),初始状态是什么 6 可嵌套的合理解释   NVIC核心点介绍          NVIC可以看做是CPU的得力干将,负责了CPU所有的外设中断,而内部的异常中断则是有SCB系统控制块来管理

Vincent 1万+

ZYNQ烧写程序到flash

1.打开SDK创建FBSl项目 点击finish 2.创建BootImage 导入fsbl.elf、.bin、.elf三个文件,Create Image 生成BOOT.bin文件 3.将BOOT文件烧录到FLASH image File选择2中生成的BOOT.bin文件,FSBL File选择fsbl.elf文件,连接好ZYNQ的Jtag,点击Program,即可烧录。 4.烧录程序到FLASH失败 如果是第一次烧录,需更改创建的fsbl工程下的main函数,在如下代码处加入BootModeRegi

qq_40603614的博客 8315

AIGC内容溯源技术:如何追踪AI生成内容的原始来源

本文旨在系统性地介绍AIGC内容溯源的技术体系,帮助读者理解如何追踪AI生成内容的来源。我们将覆盖从基础概念到前沿技术的完整知识链,包括但不限于数字水印、区块链存证、内容指纹等技术方案。文章将从AIGC的基本概念出发,逐步深入探讨各种溯源技术,分析其原理和实现,最后讨论实际应用和未来趋势。AIGC:AI Generated Content,人工智能生成内容内容溯源:追踪数字内容的创作、修改和传播历史数字水印:嵌入在数字内容中的不可见识别信息数字水印:隐藏在内容中的识别信息,像隐形墨水内容指纹。

SuperAGI2025 2070

Cortex-M4 NVIC与MPU深度解析:中断管理与内存保护实战指南

中断控制器与内存保护单元是嵌入式系统实现实时性与稳定性的核心硬件机制。中断控制器负责协调处理器的中断响应,通过优先级管理、硬件现场保存与尾链优化等技术,确保外部事件能得到及时处理,是系统实时性的基石。内存保护单元则通过划分内存区域并定义访问权限,防止非法内存访问导致系统崩溃,尤其在多任务环境中保障了任务间的隔离与安全。理解其工作原理与配置方法,对于开发健壮的嵌入式应用,尤其是在实时操作系统环境下实现可靠的任务调度与资源管理,具有至关重要的工程价值。本文将结合Cortex-M4内核的NVIC与MPU,深入探讨

weixin_30745553的博客 360

# 芯片良率是怎么算出来的?——从泊松到负二项分布,一个芯片测试工程师的视角

- 良率=好Die/总Die,但选错模型可能差17个百分点 - Poisson模型过于悲观,Murphy居中,**Negative Binomial才是业界标配** - 关键不是良率数字,是**跟踪聚类因子α的变化**——它能早几周预警工艺漂移 - Chiplet时代,10颗90%良率的Die封在一起,整体良率只有35%

Freezeblur的博客 652

GPIO不只是点灯:STM32输入输出 + EXTI + NVIC彻底讲透

STM32 GPIO + EXTI + NVIC,看似零散的知识,其实是一条完整的链路:**GPIO 控制信号 → EXTI 生成中断 → NVIC 调度执行**。面试官问你时,不在乎你会调用多少函数,而在乎你能否把这条链路讲顺、讲清楚。

qq_45290757的博客 520

OpenCV函数用法之calibrateCamera

参考链接:opencv中标定函数calibrateCamera_ychl87的专栏-优快云博客 世界坐标系的三维点投影到成像坐标系中的二维点的投影公式如下: 其中(X,Y,Z)为世界坐标系中的三维点; (u,v)为成像面坐标系中的二维点; A为相机的内参数矩阵:(cx,cy)为主光轴点,一般为图像的中心;fx和fy为焦距; [R|t]为相机的外参数矩阵:R为旋转矩阵,t为位移矩阵; 上述公式的简单推理过程如下 考虑到镜头畸变 其中,k1,k2,k3,k4,k5和k6为径向畸变,p1和.

tiger&sheep的博客 3万+

【多元统计分析】均值向量和协方差阵的检验——spss上机实验

均值向量和协方差阵的检验——spss上机实验 #参考书目为《多元统计分析》(第五版)——何晓群.中国人民大学出版社 #如有错误,请指正!谢谢~ #关注公众号搜索同名文章获取数据~ 习题2.3 现选取内蒙古、广西、贵州、云南、西藏、宁夏、新疆、甘肃和青海等9个内陆边远省区。选取人均GDP、第三产业比重、人均消费支出、人口自然增长率及文盲半文盲人口占15岁以上人口的比例等5项能较好的说明各地区社会经济发展水平的指标,验证边远及少数民族聚居区的社会经济发展水平与全国平均水平间有无显著差异。 将输入导入spss

suansuannainaizi的博客 3万+

从零构建Cortex-M4中断系统:NVIC与VTOR的实战配置手册

本文详细介绍了从零构建Cortex-M4中断系统的实战配置方法,重点解析了NVIC(嵌套向量中断控制器)的优先级分组与中断嵌套机制,以及VTOR(向量表偏移寄存器)在Bootloader与应用程序间的向量表切换技术。通过代码示例和调试技巧,帮助开发者高效配置中断系统,提升嵌入式设备的实时性和稳定性。

g5h6i的博客 464

PCB板Gerber文件的理解和制作

Gerber文件是PCB生产的关键文件,主要包括:1)走线层(GTL/GBL);2)阻焊层(GTS/GBS);3)丝印层(GTO/GBO);4)板框层(GMx/GKO);5)钢网层(Gtp/GBp);6)钻孔文件(NCdrillFiles)。其中1-10项和15项钻孔文件必须提供,建议包含11-14项辅助钻孔层。Gerber文件不含过孔属性,需提前在AD中设置过孔盖油。导出步骤包括:导出非机械层、机械层和钻孔层,新版AD可通过"文件->制造输出->GerberFiles"操作

qq_37999850的博客 853

NXP LPC1768 Cortex-M3处理多外设任务

本文深入解析NXP LPC1768在高实时性场景下的多外设协同设计,涵盖Cortex-M3中断机制、AHB/APB总线架构、环形缓冲实现类DMA效果及多任务调度策略,帮助开发者提升系统稳定性和响应效率。

weixin_31176789的博客 315

【Unity的HDRP渲染管线下用Steam VR串流结合使用遇到的各种问题_SteamVR 插件和Pico串流助手】

当你启用"Mock Runtime"选项后,Unity将模拟一个虚拟的OpenXR运行时环境,并提供一些虚拟的设备和功能,让你能够进行开发和调试。在Unity中,SteamVR插件是一个由Valve提供的Unity插件,它允许开发者在Unity项目中集成SteamVR功能,以便支持SteamVR设备。OpenXR是一个跨平台的虚拟和增强现实(VR/AR)开发接口,它为开发者提供了一个统一的接口,用于访问不同VR/AR硬件设备和平台的功能。这个选项是用于模拟OpenXR运行时环境的功能。

暴走约伯的博客 2800

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

STM32 NVIC中断控制器原理与工程配置详解

中断控制器是嵌入式实时系统的核心组件,负责管理硬件异常与外设中断的响应调度。其本质基于向量表机制与优先级分组(Preemption/Subpriority)原理,通过ISER/ICER寄存器实现原子级使能控制,借助IPR寄存器完成多级抢占调度。该机制保障了确定性延迟与任务隔离,广泛应用于电机控制、工业通信和传感器数据采集等强实时场景。在STM32F103平台中,NVIC作为Cortex-M3内核内置模块,支持60个外部中断通道与静态向量映射,其配置必须协同外设时钟、GPIO模式及中断服务函数命名规范,方能实

weixin_42300144的博客 134

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 电缆/电线型号含义
下一篇: NXP i.MX RT1052 时钟配置
returningprodigal
博客等级 码龄12年 53粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值