news 2026/3/3 2:26:29

简单理解:配置NVIC优先级分组2(2位抢占+2位子优先级)具体有哪几个?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
简单理解:配置NVIC优先级分组2(2位抢占+2位子优先级)具体有哪几个?

NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器)优先级分组是 STM32 中用于管理中断优先级的重要机制,通过分组决定抢占优先级和子优先级各占多少比特位2。以下是具体介绍2:

  • 分组方式:STM32 支持 5 种优先级分组,通过NVIC_PriorityGroupConfig()函数配置。具体如下:
    • NVIC_PriorityGroup_0:0bit 抢占优先级、4bit 响应优先级,抢占优先级取值为 0,响应优先级取值为 0~15。
    • NVIC_PriorityGroup_1:1bit 抢占优先级、3bit 响应优先级,抢占优先级取值为 0~1,响应优先级取值为 0~7。
    • NVIC_PriorityGroup_2:2bit 抢占优先级、2bit 响应优先级,抢占优先级取值为 0~3,响应优先级取值为 0~3。
    • NVIC_PriorityGroup_3:3bit 抢占优先级、1bit 响应优先级,抢占优先级取值为 0~7,响应优先级取值为 0~1。
    • NVIC_PriorityGroup_4:4bit 抢占优先级、0bit 响应优先级,抢占优先级取值为 0~15,响应优先级取值为 0。
  • 优先级规则:组优先级高的中断能抢占组优先级低的中断,实现中断嵌套。若多个挂起异常共用相同的组优先级,则需使用次优先级来决定同组中的异常优先级。例如在 NVIC_PriorityGroup_2 中,抢占优先级为 0 的中断可以打断抢占优先级为 1、2、3 的中断,若两个中断抢占优先级都为 1,则子优先级低的(数值小)会先执行。

在 NVIC 优先级分组 2(2 位抢占优先级 + 2 位子优先级)下,抢占优先级(Preemption Priority)和子优先级(Sub Priority)的取值范围均为0~3(2 位二进制数的所有组合),二者的所有组合共形成4(抢占)× 4(子)= 16 种具体优先级配置

16 种优先级配置详情表

下表列出了所有组合,包含 “抢占优先级、子优先级、对应的 IP 寄存器 4 位值(二进制 / 十进制)”,其中:

  • IP 寄存器值:NVIC 的中断优先级控制寄存器(IP)用 4 位存储优先级,分组 2 下的格式为[抢占优先级(2位)][子优先级(2位)],即(抢占优先级 << 2) | 子优先级
  • 优先级规则:抢占优先级数值越小,优先级越高(可打断低抢占优先级中断);若抢占优先级相同,子优先级数值越小,优先级越高(仅决定同抢占级下的响应顺序,不可嵌套)。
序号抢占优先级(2 位)子优先级(2 位)IP 寄存器 4 位值(二进制)IP 寄存器值(十进制)
10000 000
20100 011
30200 102
40300 113
51001 004
61101 015
71201 106
81301 117
92010 008
102110 019
112210 1010
122310 1111
133011 0012
143111 0113
153211 1014
163311 1115

关键说明

  1. 优先级高低对比示例

    • 配置 1(抢占 0,子 0)优先级最高,可打断所有其他 15 种配置的中断;
    • 配置 16(抢占 3,子 3)优先级最低,无法打断任何其他配置的中断,且仅在所有高优先级中断未挂起时才响应;
    • 配置 5(抢占 1,子 0)和配置 7(抢占 1,子 2):抢占优先级相同,配置 5 的子优先级更高,若二者同时挂起,配置 5 先响应(不可嵌套)。
  2. 代码配置示例(以配置 7 为例):若需将某中断(如定时器 1 更新中断)配置为 “抢占 1,子 2”,代码如下:

    // 1. 先设置分组2(整个程序仅需调用1次) NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 2. 配置具体中断优先级(定时器1更新中断) NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = TIM1_UP_IRQn; // 中断通道:定时器1更新 NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1; // 抢占优先级1 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2; // 子优先级2 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; // 使能中断 NVIC_Init(&NVIC_InitStruct);
  3. 注意事项

    • 同一系统中仅能选择一种 NVIC 分组(如分组 2),多次调用NVIC_PriorityGroupConfig()会导致优先级混乱;
    • 抢占 / 子优先级不可超出 0~3 的范围,否则会出现未定义的中断响应行为。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 10:00:23

开题报告“救星”驾到!书匠策AI如何让你的研究赢在起点?

对于科研小白来说&#xff0c;开题报告就像一道高耸的学术门槛——选题撞车、文献堆砌、逻辑混乱、格式错误……这些问题像无形的绊脚石&#xff0c;让许多人还未出发就摔得头破血流。但别慌&#xff01;今天要介绍的科研神器——书匠策AI&#xff08;官网&#xff1a;www.shuj…

作者头像 李华
网站建设 2026/3/2 6:22:44

高性价比拉篮品牌推荐,六款精工之选,点亮你的厨房收纳空间

厨房收纳&#xff0c;是提升家居幸福感的关键一环。面对有限的橱柜空间&#xff0c;一款设计合理、品质过人的拉篮&#xff0c;往往能起到“四两拨千斤”的作用。它不仅关乎整洁美观&#xff0c;更直接影响到日常烹饪的便捷与效率。然而&#xff0c;市场上拉篮品牌繁多&#xf…

作者头像 李华
网站建设 2026/2/27 6:14:25

支持私有化部署的企业级培训考试系统源码,提供多种练习模式

温馨提示&#xff1a;文末有资源获取方式企业内部培训常常面临数据敏感、流程繁杂、效果难追踪等痛点。针对这些挑战&#xff0c;我们为您推荐一款支持私有化部署的企业级培训考试系统源码。它不仅仅是一套软件&#xff0c;更是一个安全、自主、可深度定制的数字化培训基础设施…

作者头像 李华
网站建设 2026/2/26 12:16:30

『React』组件副作用,useEffect讲解

在 React 开发中&#xff0c;有时候会听到“副作用”这个词。特别是用到 useEffect 这个 Hook 的时候&#xff0c;官方就明确说它是用来处理副作用的。那什么是副作用&#xff1f;为什么我们要专门管控它&#xff1f;今天就聊聊 React 中的组件副作用。 &#x1f4cc; 什么是“…

作者头像 李华
网站建设 2026/2/26 13:01:00

参考文献崩了?AI论文网站 千笔ai写作 VS speedai,自考写作者的高效之选!

随着人工智能技术的迅猛发展&#xff0c;AI辅助写作工具正逐步渗透到高校学术写作场景中&#xff0c;成为专科生、本科生、研究生完成毕业论文不可或缺的得力助手。越来越多的学生在面对繁重的论文任务时&#xff0c;开始依赖AI工具来提升写作效率、优化内容结构。然而&#xf…

作者头像 李华
网站建设 2026/2/21 6:09:34

绿色AI测试工具:碳足迹追踪在模型训练/推理的优化仪表盘

测试工程师的新战场 随着AI模型在软件测试中的广泛应用&#xff0c;其训练与推理的能源消耗已成为不可忽视的成本。一次Stable Diffusion推理消耗0.1-0.3度电&#xff0c;大规模商用累计能耗惊人。对测试团队而言&#xff0c;传统性能测试已无法满足可持续发展需求——碳足迹追…

作者头像 李华