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"定位。

相关推荐
国科安芯1 小时前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
树的枝4 小时前
【STM32】03.中断和EXTI外设
笔记·stm32·单片机·嵌入式硬件
单片机杂货铺5 小时前
【单片机毕业设计选题】基于stm32单片机儿童公路车速度检测报警
stm32·单片机·嵌入式硬件·51单片机·硬件工程·课程设计
振南的单片机世界6 小时前
看门狗硬核拆解:1.6秒不喂狗,硬件强制“掀桌子”
arm开发·stm32·单片机·嵌入式硬件
嵌入式阿蔡7 小时前
Linux_01:交叉编译与开发环境实战——从单片机跨到 Linux 的第一道坎
linux·运维·网络·单片机·嵌入式硬件·嵌入式实时数据库
NYFEA8 小时前
徕飞 FCA系列全面上新,一站式I/O扩展国产替代方案
单片机·嵌入式硬件
国科安芯9 小时前
ASL622S:把“信号失真“挡在门外的航天级运放
网络·单片机·嵌入式硬件·架构·状态模式·低轨卫星星座
XiHongShi20169 小时前
STM32H7 FLASH和SRAM标准例程
stm32·单片机·嵌入式硬件
单片机杂货铺10 小时前
【单片机毕业设计选题】基于单片机的智能牛奶保鲜箱设计
人工智能·stm32·单片机·物联网·毕业设计·课程设计
LCG元11 小时前
STM32F103 硬件 I2C 驱动 MPU6050:一阶互补滤波姿态解算与零偏校准实测
stm32·单片机·嵌入式硬件