022.STM32标准库学习之SysTick(04)中断优先级深入:内核外设 vs 片内外设

引言:

在掌握了 System Tick 的基本配置之后,本章将重点拆解内核外设(如 SysTick)与普通片内外设的中断优先级究竟如何比较?这个问题若不彻底厘清,会导致延时函数与其他中断冲突,程序行为混乱。本篇将重点解开“内核外设优先级一定更高”的常见误解。

本文逻辑链条:

1.确认内核外设与片内外设均使用 4 位二进制表示优先级。

2.内核外设没有自己的优先级分组寄存器,但比较时必须按照片内外设的分组方式解析。

3.数值越小优先级越高,默认配置为 15(最低)。

4.当软件优先级完全相同时,硬件中断编号(向量表位置)越小,优先级越高。

1. 中断优先级分组:内核外设的“被动解析规则”

核心概念如下:

优先级位数统一:在 STM32 中,内核外设(SysTick、PendSV)与片内外设(USART、TIM)均使用 4 个二进制位 表示中断优先级,可配置范围 0~15(2⁴-1)。这是两者比较的基础。

优先级分组差异如下:

片内外设:

可配置抢占/子优先级分组

内核外设:

不支持分组,只写完整4位数值

硬件仲裁:

强制按外设分组解析内核数值

这说明了一个重要的STM32底层逻辑:当两个中断同时发生,硬件仲裁器必须统一比较规则——先比较抢占优先级,若相同再比较子优先级。

假设分组2(高2位抢占,低2位子优先级)

SysTick 数值13(0b1101)→ 抢占3,子优先级1

内核外设的4位数值被“强制解读”为与片内外设分组定义一致的抢占位和子位,然后进行比较

常见误区:“内核外设是内核的一部分,所以它的中断优先级天然高于所有片内外设。”
实际应用中:比较时只看实际配置的 4 位数值(按外设分组解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值