news 2026/6/1 15:00:24

简单理解:配置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/5/28 13:27:42

研究生收藏!全网顶尖的AI论文写作软件 —— 千笔·专业论文写作工具

你是否正在为论文写作而苦恼&#xff1f;选题无从下手、文献资料难找、格式反复出错、查重率居高不下……这些难题是否让你夜不能寐&#xff1f;别让论文成为你毕业路上的绊脚石&#xff0c;现在&#xff0c;一款专为学生打造的AI论文写作工具——千笔AI&#xff0c;正为你提供…

作者头像 李华
网站建设 2026/5/28 17:46:52

意义生成动力学:DOS叙事环与伦理的涌现

意义生成动力学&#xff1a;DOS叙事环与伦理的涌现——一个面向算法社会的人机协同分析框架摘要&#xff1a;在算法技术深度重构社会现实的时代&#xff0c;传统伦理学以“应用既定规范”为核心的治理模式遭遇了生成论层面的根本挑战。本文提出并系统阐释了“AI元人文”思想框架…

作者头像 李华
网站建设 2026/5/29 2:04:22

改稿速度拉满!好评如潮的AI论文网站 —— 千笔·专业论文写作工具

你是否曾为论文选题发愁&#xff0c;反复修改却总不满意&#xff1f;面对海量文献无从下手&#xff0c;格式错误、查重率高、AI检测不通过……这些论文写作中的“拦路虎”是否让你倍感压力&#xff1f;别再让这些问题影响你的学术之路。千笔AI&#xff0c;专为学生打造的智能论…

作者头像 李华
网站建设 2026/5/31 10:35:12

【微实验】三参数威布尔分布全网最好懂的讲解,附matlab仿真代码

&#x1f4dc; 卷首&#xff1a;于日暮与烛火间&#xff0c;寻找可靠性的刻度你是否想过&#xff0c;一个机械零件的“生老病死”&#xff0c;一段电池容量的“悄然流逝”&#xff0c;或是一片风机叶轮的“命运曲线”&#xff0c;它们遵循着怎样共同的韵律&#xff1f;这并非简…

作者头像 李华
网站建设 2026/5/28 13:27:48

百考通AI:智能任务书生成,让学术与项目规划更专业高效!

在学术研究与项目管理的征途中&#xff0c;任务书是明确研究方向、规划实施路径的核心文件。无论是毕业设计、科研项目还是企业创新&#xff0c;一份高质量的任务书不仅关系到项目的顺利开展&#xff0c;更是衡量研究者专业素养的重要标尺。然而&#xff0c;面对严谨的学术规范…

作者头像 李华