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

相关推荐
晊晌_h36 分钟前
嵌入式硬件——51单片机
单片机·mcu·51单片机·位运算·硬件基础
Rocktech_ruixun6 小时前
机器人本地跑LLM大模型对主板硬件有什么要求?瑞迅科技RK3588/3568方案选型解析
人工智能·科技·嵌入式硬件·机器人·边缘计算
天空'之城8 小时前
单片机基础核心知识点汇总(三十四)
单片机·嵌入式硬件
Horn Still Sounds9 小时前
51单片机入门:硬件基础、位运算、数码管动态显示完整梳理
嵌入式硬件·mongodb·51单片机
三佛科技-1873661339710 小时前
24W-48W隔离双绕组非标自供电芯片LP3718CD(电路原理图)
单片机·嵌入式硬件
糖糖单片机设计12 小时前
基于 STM32 的小型鸟类宠物繁殖系统
stm32·嵌入式硬件·宠物
电子元器件选型哥13 小时前
一文讲清LLC谐振电路工作原理
单片机·嵌入式硬件·硬件工程师·电子元器件·器件选型
HUI-47414 小时前
EG1162|SOP‑16 高压同步整流降压控制器,最高 600V 输入,大电流 5V 输出优选
嵌入式硬件·硬件工程
POMAGTOR14 小时前
【5G 通讯 POGOPIN 弹簧顶针连接器解决方案】
网络·嵌入式硬件·5g
ZLG_zhiyuan14 小时前
测试方案 | 从“000”到“111”,高效完成100BASE-TX以太网眼图测试
单片机·嵌入式硬件