STM32中断优先级处理机制

设置中断时需要配置中断的优先级,STM32将中断优先级分为抢占优先级(也叫先占优先级)和响应优先级(亚优先级或从优先级),每个中断源都需要设定这两种优先级。

当中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时中止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程叫做中断嵌套。什么样的中断能嵌套,什么样的不能嵌套?

1、高抢占优先级的中断可以嵌套低抢占优先级的中断。

2、当两个中断源的抢占优先级相同时,不管这两个中断源的响应优先级谁高谁低,这两个中断将没有嵌套关系,这种情况下当STM32正在处理一个中断时,如果另一个中断到来,这个后到来的中断就要等到前一个中断处理完之后才能被处理。

3、当两个中断源的抢占优先级相同时,并且两个中断同时到达,则中断控制器将根据响应优先级高低来决定先处理哪一个;如果这两个中断的响应优先级也相等,则根据在中断清单表3-1中的排位顺序决定先处理哪一个,序号越小,优先级越高。Cortex-M3内核中定义了8个比特位用于设置中断源的优先级,STM32F103只使用了其中的4个位,这4个位又被抢占优先级和响应优先级共同使用。而抢占优先级和响应优先级各自优先级的级数是可设的,共分为5组,如表3-2所示。无论抢占优先级还是响应优先级遵循数值越小,优先级越高。编写程序时,首先要预先对程序的各个功能模块进行计算论证,开机初始化时一次性设置好优先级分组,以后就再也不动他了,避免同一个程序中使用多个优先级分组。
在这里插入图片描述
根据工程开发经验,在对响应中断优先级没有特殊要求的前提下,初始化时可以将优先级分组设置为NVIC_PriorityGroup_4的方式,即只设置成抢占优先级,或者不设置优先级分组,使用系统默认优先级。当需要中断嵌套时,通过设置抢占优先级区分中断高低优先级;当不需要中断嵌套时,设置成相同的抢占优先等级,那么STM32将会按照表3-1中的默认排位顺序决定其响应优先级的高低,确定先处理哪一个中断。

注意:【抢占优先级的中断才可以可以嵌套】

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白q_5793545

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值