STM32单片机NVIC
STM32单片机NVIC
好的,我们来详细解释一下 STM32 单片机中的 NVIC(嵌套向量中断控制器)。
简单来说: NVIC 是 ARM Cortex-M 内核(包括 STM32 使用的 Cortex-M0, M0+, M3, M4, M7, M33 等)内部集成的硬件模块,专门负责管理和协调所有来自片上外设(如 UART, SPI, TIMER, ADC 等)和内核自身(如 SysTick, PendSV)的中断请求。
它就像一个交通指挥中心,核心任务就是高效、有序地处理多个同时或相继发生的中断事件。
? NVIC 的核心功能与作用
-
中断优先级管理:
- 核心任务: 为每个可能发生的中断源分配一个优先级。
- 优先级规则:
- 数值越小,优先级越高(0 通常是最高优先级)。
- 抢占优先级 (Preemption Priority): 高抢占优先级的中断可以打断正在执行的低抢占优先级中断(嵌套中断)。
- 子优先级/响应优先级 (Subpriority): 当多个中断同时发生(或具有相同抢占优先级的中断排队时),NVIC 会先响应子优先级更高的中断。相同抢占和子优先级时,按硬件固定顺序响应。
- 优先级分组: 通过设置应用中断及复位控制寄存器 (
SCB->AIRCR中的PRIGROUP位) 来划分 抢占优先级位 和 子优先级位 的数量(例如 4 位抢占 + 0 位子优先,或 3+1, 2+2, 1+3, 0+4)。这决定了系统最多能区分多少级抢占和多少个同级中断下的响应顺序。这是 STM32 中断配置的关键步骤之一。
-
中断使能/除能:
- 中断使能寄存器 (
ISERx): 用于开启特定通道的中断响应功能。只有使能的中断源发出的请求才会被 NVIC 处理。 - 中断除能寄存器 (
ICERx): 用于关闭特定通道的中断响应功能。
- 中断使能寄存器 (
-
中断挂起与清除:
- 中断挂起寄存器 (
ISPRx): 当一个中断源发出请求,但处理器当前无法立即响应(比如在处理更高优先级中断)时,该中断会被“挂起”(Pending),对应的挂起标志位会被置位。 - 中断清除挂起寄存器 (
ICPRx): 当需要手动清除(确认)某个已被挂起的中断标志时使用。(通常在中断服务函数中处理完中断后,需要清除外设自身的中断标志,而 NVIC 的挂起标志通常会在响应后自动清除)。
- 中断挂起寄存器 (
-
中断状态查询:
- 中断活动状态寄存器 (
IABRx): 指示某个中断当前是否正在被处理器执行(处于活动状态)。
- 中断活动状态寄存器 (
-
中断向量表处理:
- NVIC 在收到一个被批准响应的中断请求后,会根据该中断的编号(IRQn),自动定位到内存中中断向量表对应的位置。
- 中断向量表 是一个存储着各个中断服务函数 (
ISR) 入口地址的数组(通常放在 Flash 起始位置或 RAM 中重定位)。NVIC 从中取出该中断的 ISR 地址,并让处理器跳转到那里执行。
-
中断嵌套处理:
- 基于优先级规则,高抢占优先级的中断可以打断低抢占优先级中断的执行,形成中断嵌套。NVIC 负责在嵌套发生时自动保存和恢复必要的上下文(寄存器状态),确保中断返回后程序能正确继续执行。
-
低延迟中断处理:
- Cortex-M 内核和 NVIC 的设计目标之一就是实现极低的中断延迟(从中断发生到进入 ISR 第一条指令的时间)。NVIC 的硬件自动化和紧耦合设计是实现这一目标的关键。
-
尾链优化 (Tail-Chaining):
- 当一个中断的 ISR 刚结束退出时,如果恰好有一个 已挂起且优先级足够(高于被中断的上下文)的中断在等待,NVIC 会跳过恢复部分上下文再立即保存的部分流程,直接“链入”到等待中断的 ISR。这大大减少了连续中断处理的时间开销。
? 在 STM32 开发中如何使用 NVIC
-
系统初始化:
- 设置向量表偏移(如果需要重定位)。
- 配置优先级分组 (
HAL_NVIC_SetPriorityGrouping()或直接写SCB->AIRCR)。通常在整个程序初始化时设置一次,之后不再更改。
-
外设中断配置:
- 初始化具体的外设(如 UART, TIMER 等),并根据需要配置该外设本身的中断触发条件(例如使能 UART 接收完成中断)。
- 配置该外设对应的中断通道的优先级(抢占 & 子优先级) (
HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)). - 使能该中断通道 (
HAL_NVIC_EnableIRQ(IRQn_Type IRQn))。
-
编写中断服务函数 (
ISR):- 在启动文件
startup_stm32xxxx.s中已经为每个中断通道预先定义了默认的弱函数(weak符号)。我们需要在 C 文件中(通常是stm32xxxx_it.c)重新实现(覆盖)这个函数。 - 函数名必须与启动文件中定义的向量名称一致(如
USART1_IRQHandler(void))。 - 在 ISR 内部:
- 判断具体是哪个中断源触发的(通过读取外设状态寄存器)。
- 执行必要的处理逻辑(尽量简短高效!)。
- 清除外设自身的中断标志位(非常重要,否则会连续触发中断)。
- NVIC 的挂起位通常在进入 ISR 后会自动清除,一般不需要手动清除
ISPRx。
- 在启动文件
-
处理中断嵌套注意事项:
- 如果中断会被更高优先级中断抢占,需要特别注意共享数据的保护(使用临界区保护或原子操作)。
? 关键点总结
- 硬件模块: NVIC 是 Cortex-M 内核的一部分,所有 STM32 都具备。
- 核心职责: 中断优先级管理、开关控制、挂起/清除处理、中断向量跳转。
- 关键概念: 优先级分组(抢占/子优先级)、中断使能、中断服务函数。
- 为什么重要? 它是实现 STM32 实时响应外部事件 能力的基础。正确的 NVIC 配置对于系统稳定性和实时性至关重要。
- 工具辅助: STM32CubeMX / STM32CubeIDE 提供了图形化界面来配置外设中断和 NVIC 优先级,极大简化了配置过程,并自动生成相关代码(包括向量表、ISR 骨架、NVIC 初始化代码)。
总而言之,NVIC 是 STM32 中断系统的核心大脑?,负责确保多个中断请求能够按照预定的优先级规则,有序、高效地被处理器响应和执行。 理解并正确配置 NVIC 是进行 STM32 中断编程的关键。?
STM32单片机的特点和功能是什么
STM32单片机是一款基于ARM Cortex-M内核的32位闪存微控制器,由STMicroelectronics公司(意法半导体)生产。STM32
2024-01-03 15:33:59
单片机的NVIC与EXTI中断详解
的控制。但是各个芯片厂商在设计芯片的时候会对 Cortex-M4内核里面的 NVIC进行裁剪,把不需要的部分去掉,所以说 STM32的 NVIC
2023-11-01 12:35:18
STM32单片机中断及NVIC的详细资料概述
对51单片机有一定了解的都知道51单片机有5个中断源,2个优先级,通过对IP这个寄存器赋值来进行中断优先级的处理而STM32的中断非常强大,每个
资料下载
麻酱
2019-07-17 17:39:00
STM32单片机外部中断简介 STM32单片机外部中断的配置过程
STM32 单片机是一款高性能、低功耗的 32 位微控制器,具有强大的计算能力、灵活的外设模块以及优秀的扩展性,开发周期短、成本低。在单片机应用
2023-08-15 18:21:05
CKS中科芯CKS32F030C8T6 mcu单片机 LQFP48 替换STM32F030C8T6
1970-01-01 08:00:00 至 1970-01-01 08:00:00
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览