NVIC:Cortex-M内核的“中断CPU”

你有没有想过一个问题:

多个外设同时产生中断,谁先执行?高优先级中断来了,低优先级中断怎么办?

NVIC说了算。

NVIC(Nested Vectored Interrupt Controller)是Cortex-M内核的"中断CPU"------专门管中断的硬件模块,不依赖软件轮询。

NVIC的五大核心能力

1. 优先级仲裁

  • 抢占优先级:决定能否打断别人(数值越小越高)
  • 子优先级:抢占相同时决定谁先执行(不能打断)
  • 自然优先级:向量表位置(最后的仲裁)

2. 硬件向量取址

中断触发后,NVIC直接从向量表取ISR地址(无需软件查中断标志),配合硬件压栈,中断响应仅12个时钟周期。

3. 尾链优化

中断A未退出、中断B已挂起→跳过A的出栈和B的入栈,直接执行B,连续响应仅6个时钟周期。

4. 优先级分组

SCB->AIRCR的PRIGROUP字段决定4个优先级位如何切分(分组0~4,默认分组4:4位抢占,0位子优先)。

5. 中断屏蔽与控制

  • ISER/ICER:使能/禁用中断
  • ISPR/ICPR:挂起/清除挂起(软件触发中断)
  • IABR:查询中断是否正在执行

可配置的16级优先级

NVIC支持最多16级抢占优先级(分组4),数值0最高、15最低。

中断响应流程(硬件自动完成)

  1. 外设产生中断请求
  2. NVIC裁决优先级(与当前中断比较,判断是否嵌套)
  3. 硬件自动压栈(8个寄存器,32字节)
  4. 从向量表取ISR地址
  5. 跳转执行ISR
  6. ISR返回(硬件自动出栈)

压栈、取址、出栈都是硬件完成,无需软件PUSH/POP。

这个故事的启示, NVIC不是"外设",是Cortex-M内核的组成部分。没有NVIC,中断响应需要软件查询标志、软件压栈------慢且不确定。 NVIC让ARM32的中断响应快且确定(12个时钟周期)。写在最后, NVIC的5个核心能力:优先级仲裁、硬件向量取址、尾链优化、优先级分组、中断屏蔽控制------五个功能,撑起整个中断系统。


(本文灵感源于于振南《新概念ARM32单片机》教程第5.4节、第5.5节、第5.6节、第5.8节。)

觉得有用?点赞、转发,让更多人看懂NVIC的"中断CPU"定位。

相关推荐
HQB20267 小时前
EG1198|屹晶微电子 120V 内置 MOS 异步降压 DC‑DC(高性价比)
嵌入式硬件·硬件工程
果壳science9 小时前
张祥前实验如何获取正电荷
笔记·科技·嵌入式硬件·硬件工程·制造
南山电子nscn9 小时前
中科芯CETC汽车电池管理系统BMS进口芯片国产型号替代指南
单片机·汽车·bms
沉淀的.晴天9 小时前
can总线
stm32
桀人10 小时前
认识AT24C02
stm32·单片机·嵌入式硬件
国科安芯11 小时前
星间激光通信终端CANFD控制网络的时延确定性与辐射可靠性
网络·嵌入式硬件·信息与通信·canfd·低轨卫星·商业航天·抗辐射
一直C11 小时前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
传感器与混合集成电路11 小时前
150MHz主频、8路DAC与6路PWM:JLH221360伺服控制SIP解析
嵌入式硬件
comyccccc12 小时前
STM32PID控制板设计全解析学习笔记
单片机·嵌入式硬件
碧海银沙音频科技研究院12 小时前
实现炬芯ATS308X的usb cdc 串口IAP 固件升级功能实现
人工智能·嵌入式硬件·深度学习·算法