STM32中断优先级的分配以及中断原则

  1. STM32d的中断优先级由NVIC_IPRx寄存器来配置,IPR的宽度为8bit所以原则上每个中断可配置的优先级为0~255,数值越小优先级越高,但对于大部分的 Cortex-M3芯片都会精简设计,导致实际上支持的优先级数量更少。在STM32中只使用了IPR寄存器的高四位,低四位读回都为0。
    在这里插入图片描述

  2. 用于表达优先级的这四位又被分组为5组0~4,当配置中断优先级时要先选择你要将中断优先级分为哪一组,一个组又分成了抢占优先级和子优先级。具体如下图在这里插入图片描述
    所以由上图可知当选择中断优先级为组0时,主优先级可选值只有0,子优先级可选值为0~15。其余4组以此类比。当不同组别的优先级需要比较时,就直接比较IPR寄存器的高四位的值,越小优先级越高。

  3. 当中断优先级配置完成后,若多个中断同时发生则先比较抢占优先级谁的值小谁先进行,若抢占优先级相同则比较子优先级谁的值小谁先进行,若两者都相同,就比较硬件中断编号(该编号由硬件自身决定),值得注意的是当一中断正在进行时又一中断发生若后者的抢占优先级的值比前者小则后者可以打断正在发生的中断执行后者的中断进程,需要注意若后者的抢占优先级与前者相等但子优先级的值比前者小此时后者不能打断正在发生的中断必须等其完成后才能进行,至于后者的优先级比正在发生的中断优先级低的情况,那就肯定是等待正在进行的中断完成后再进行。

学了32两年时间了,现在想开始总结下写写博文,有问题可以给我留言。

  • 15
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值