news 2026/6/9 1:23:22

NVIC:中断的“裁判员”,谁优先级高谁先执行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NVIC:中断的“裁判员”,谁优先级高谁先执行

短文标题:NVIC:中断的“裁判员”,谁优先级高谁先执行

你有没有想过一个问题:USART1和TIM2中断同时发生,CPU先处理哪个?NVIC说了算。NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器)是Cortex-M内核内置的中断管理器。NVIC的核心职责

  • 接收所有外设的中断请求(IRQ)
  • 比较优先级,决定先响应哪个
  • 管理中断嵌套(高优先级打断低优先级)
  • 提供硬件向量机制:硬件自动从向量表取中断服务函数地址,无需软件判断中断源

优先级配置,每个中断可以配置两个优先级,由分组决定4个bit如何分配:

  • 抢占优先级(数值越小越高):决定能不能打断别人
  • 子优先级(数值越小越高):抢占相同时,决定谁先执行,但不能互相打断

抢占优先级不同的中断可以嵌套,抢占相同的只能排队。优先级数值范围:0(最高)~ 15(最低),由优先级分组(PRIGROUP)决定抢占和子优先的位数分配。

中断向量表与硬件向量 ,中断向量表存放在Flash起始地址(0x08000000),每个中断对应一个函数指针(中断服务函数地址)。中断发生时,NVIC硬件自动:

  1. 压栈现场(8个寄存器)
  2. 从向量表取ISR地址
  3. 跳转执行

不需要软件查中断标志,硬件直达,响应快。

嵌套管理,高抢占优先级中断可以打断低抢占优先级中断的执行,形成中断嵌套。执行顺序:低优先级ISR执行中,高优先级到来 → 低优先级被暂停 → 高优先级执行 → 恢复低优先级。高优先级中断应短小精悍,避免“饿死”低优先级中断。

尾链优化(Tail-Chaining),中断A未退出,中断B已挂起。传统架构:出栈A → 压栈B → 执行B。Cortex-M尾链:跳过A的出栈和B的压栈,直接执行B。连续中断响应时间降至6个时钟周期

这个故事的启示,NVIC不是“外设”,是Cortex-M内核的一部分。中断优先级不是摆设,是系统的“交通规则”。设对了,系统稳;设错了,中断堵死,系统崩。写在最后,中断配置是系统工程,看需求:哪些要打断(高抢占)?哪些要排队(同抢占)?抢占决定打断,子优先决定顺序。


(本文灵感源于于振南《新概念ARM32单片机》教程第5.4节“ARM32中断控制器原理”。)

觉得有用?点赞、转发,让更多人看懂NVIC的“裁判”逻辑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 1:22:17

干货电脑技巧汇总:6 个妙招找回丢失珍贵照片

日常工作和生活中,大家习惯将手机、相机拍摄的照片传输到电脑分类存储,既能释放设备内存,也方便长期归档查阅。但电脑存储并非绝对安全,很多用户都会遇到照片误删、回收站清空、永久删除丢失的问题。 不少人以为回收站清空后&…

作者头像 李华
网站建设 2026/6/9 1:21:12

构建个人漫画图书馆的智能解决方案:开源漫画下载器完全指南

构建个人漫画图书馆的智能解决方案:开源漫画下载器完全指南 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.co…

作者头像 李华
网站建设 2026/6/9 1:20:03

别再截图保存了!MapChart 2.32 绘制遗传图谱的完整配置与高清导出指南

MapChart 2.32科研级遗传图谱制作:从参数配置到期刊级导出全攻略 在分子生物学和遗传学研究中,一张清晰的遗传图谱往往胜过千言万语。MapChart作为经典工具,其2.32版本在科研绘图领域依然保持着不可替代的地位——但很多研究者可能只发挥了它…

作者头像 李华
网站建设 2026/6/9 1:19:57

告别手动求导!用CppAD+IPOPT在Ubuntu 22.04上搞定非线性优化(附完整代码)

非线性优化实战:用CppADIPOPT在Ubuntu 22.04实现自动微分求解 当我们需要解决机器人路径规划、投资组合优化或工程参数调优等问题时,非线性优化往往是绕不开的技术门槛。传统手动推导梯度、雅可比矩阵的过程不仅耗时费力,还容易出错——我曾…

作者头像 李华