ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/8/2 11:08:06 拓冰建站 浏览量
NVIC:Cortex-M内核的“中断CPU” 你有没有想过一个问题多个外设同时产生中断谁先执行高优先级中断来了低优先级中断怎么办NVIC说了算。NVICNested 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默认分组44位抢占0位子优先。5. 中断屏蔽与控制ISER/ICER使能/禁用中断ISPR/ICPR挂起/清除挂起软件触发中断IABR查询中断是否正在执行可配置的16级优先级NVIC支持最多16级抢占优先级分组4数值0最高、15最低。中断响应流程硬件自动完成外设产生中断请求NVIC裁决优先级与当前中断比较判断是否嵌套硬件自动压栈8个寄存器32字节从向量表取ISR地址跳转执行ISRISR返回硬件自动出栈压栈、取址、出栈都是硬件完成无需软件PUSH/POP。这个故事的启示NVIC不是“外设”是Cortex-M内核的组成部分。没有NVIC中断响应需要软件查询标志、软件压栈——慢且不确定。NVIC让ARM32的中断响应快且确定12个时钟周期。写在最后NVIC的5个核心能力优先级仲裁、硬件向量取址、尾链优化、优先级分组、中断屏蔽控制——五个功能撑起整个中断系统。本文灵感源于于振南《新概念ARM32单片机》教程第5.4节、第5.5节、第5.6节、第5.8节。觉得有用点赞、转发让更多人看懂NVIC的“中断CPU”定位。