STM32中断优先级分组管理

本文介绍了一种通过配置SCB->AIRCR[10:8]来确定每个中断的抢占优先级和响应优先级的方法。这种方法只需进行一次分组配置即可为所有中断设置优先级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

优先级分组只分一次。配置SCB->AIRCR[10:8],就确定了每个中断的IP[7:4],也就是确定了每个中断抢占优先级和响应优先级在IP中所占的位数。之后就可以在初始化配置中单独设置每个中断的优先级。

### STM32 中断优先级分组配置方法与原理 #### 配置方法 在STM32微控制器中,中断优先级通过NVIC (Nested Vectored Interrupt Controller) 来管理。为了灵活控制不同中断之间的相对优先级STM32允许用户对中断优先级进行分组配置。 具体来说,可以通过调用`NVIC_PriorityGroupConfig()`函数来设定优先级分组模式。该函数接受一个参数,用于指定使用的优先级分组方案: ```c void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup); ``` 其中,`NVIC_PriorityGroup`是一个枚举类型的变量,定义了几种不同的优先级分组方式,例如`NVIC_PriorityGroup_0`, `NVIC_PriorityGroup_1`等。每一种分组决定了抢占优先级和响应优先级的具体划比例[^4]。 #### 配原则 当选择了某个特定的优先级分组后,总的8位优先级寄存器会被划为两部:一部用来表示抢占优先级,另一部则代表响应优先级。具体的割情况取决于所选的分组选项,在某些情况下可能会全部配给抢占优先级或完全留给响应优先级[^3]。 例如,在采用`NVIC_PriorityGroup_2`的情况下,意味着总共有4位可用于设置抢占优先级,而剩下的4位则作为响应优先级使用。这意味着此时能够区出多达16个级别的抢占优先级以及同样数量的响应优先级等级。 #### 工作机制 当中断发生时,系统会首先比较各个待处理中断请求的抢占优先级。具有较高抢占优先级的中断将会打断当前较低优先级的执行流程并立即得到服务。而对于那些拥有相同抢占优先级的多个中断而言,则进一步依据它们各自的响应优先级来进行排序;即谁的响应优先级更高就先处理哪个中断事件。倘若连这两者也一样的话,则按照这些中断在线程上下文中出现的位置先后次序依次调度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值