0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

中断优先级处理的原则及配置 抢占优先级和响应优先级的区别

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-05-18 15:10 次阅读

首先我们需要知道什么是中断优先级:中断优先级是CPU响应中断的先后顺序

中断优先处理的原则是:

  1. 先响应优先级高的中断请求,再响应优先级低的中断请求。
  2. 如果一个中断请求己被响应,同级的其他中断请求将被禁止。
  3. 如果同级的多个中断请求同时出现

中断优先级是CPU响应中断的先后顺序。中断优先处理的原则是:

  1. 先响应优先级高的中断请求,再响应优先级低的中断请求。
  2. 如果一个中断请求己被响应,同级的其他中断请求将被禁止。
  3. 如果同级的多个中断请求同时出现,CPU则按单片机内部的自然优先级顺序响应各中断请求。

单片机内部自然优先级顺序(由高到低)为:

外部中断0→定时器0中断→外部中断l→定时器1中断→串行接口中断

中断优先级的配置:

首先,对STM32中断进行分组,组0-4.同时,对每个中断设置一个抢占优先级和一个响应优先级

分组配置是在寄存器SCB->AIRCR中配置

poYBAGKEmM2AAkp_AABlzIctiLU297.png

抢占优先级和响应优先级的区别
高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。

抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。

抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。

如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行。

使用讲解 :
实际在使用中我们可以根据实际情况设置相应的优先级分组。

特别注意:一个程序代码里只能有一个中断优先级分组,存在多个 优先级分组可能会导致程序出现奇奇怪怪的错误!

poYBAGKEm8GALyznAAGvpmciYEA297.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5997

    文章

    43948

    浏览量

    620550
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10412

    浏览量

    206465
  • 中断优先级
    +关注

    关注

    0

    文章

    22

    浏览量

    9266
收藏 人收藏

    评论

    相关推荐

    STM32F103的寄存器NVIC_IPRx抢占优先级和子优先级是怎么设置的?

    STM32F103的寄存器NVIC_IPRx有些不明白,抢占优先级和子优先级是怎么设置的? 如果,中断分组2,抢占优先级3,子优先级3
    发表于 03-27 07:48

    Hightec对芯片中断优先级分配时,中断号越高中断优先级越高吗?

    请问大佬,Hightec对芯片中断优先级分配时,中断号越高中断优先级越高吗?看网上的帖子说中断
    发表于 02-27 06:13

    RTTnano的用户main函数中的优先级是多少?

    RTTnano 的用户main函数中的优先级是多少?为什么会出现创建新的task之后,main函数会抢占掉低优先级的task,例如RT_THREAD_PRIORITY_MAX设置为8 ,低于3
    发表于 02-26 08:01

    M0516中断优先级怎么设置?

    新唐M0516中断优先级的设置,有没有示例,没找到相关接口,谢谢!
    发表于 01-16 07:25

    GD32如何配置中断优先级分组以及中断优先级

    使用GD32 MCU的过程中,大家可能会有以下疑问:中断优先级如何配置和使用?
    的头像 发表于 01-10 10:30 1003次阅读
    GD32如何<b class='flag-5'>配置</b><b class='flag-5'>中断</b><b class='flag-5'>优先级</b>分组以及<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>

    STM8单片机的中断优先级如何配置

    STM8单片机的中断优先级如何配置,STM8刚开始接触,而且相关资料比较少。 麻烦用过的大佬答疑一下。
    发表于 11-08 06:56

    单片机的中断优先级是怎么确定的?

    单片机的中断优先级是怎么确定的,如果设定优先级后怎么确定设定的对不对?
    发表于 11-03 06:32

    MCS51的中断系统有几个中断源?几个中断优先级

    MCS51的中断系统有几个中断源?几个中断优先级中断优先级是如何控制的?在出现同级
    发表于 10-30 06:32

    STM8中断优先级怎么设置?

    STM8中断优先级怎么设置
    发表于 10-25 06:49

    为什么有些STM32中断没有子优先级

    看到一个交流群在讨论关于【关于STM32中断优先级的话题】,其中就有小伙伴提到:为什么有些STM32中断没有【子优先级】?
    的头像 发表于 10-17 15:50 402次阅读
    为什么有些STM32<b class='flag-5'>中断</b>没有子<b class='flag-5'>优先级</b>?

    STM32中断没有子优先级

    比如,有时候你在使用STM32CubeMX配置时,你会发现只有Preemption Priority【抢占优先级】,而没有Sub Priority【次优先级
    的头像 发表于 10-17 15:50 416次阅读
    STM32<b class='flag-5'>中断</b>没有子<b class='flag-5'>优先级</b>?

    为什么使用CubeMx配置NVIC时不见子优先级选项

    时,不难发现一个问题,那就是怎么没有中断优先级【或称响应优先级、副优先级等】的配置?!【当然,
    的头像 发表于 09-09 15:32 741次阅读
    为什么使用CubeMx<b class='flag-5'>配置</b>NVIC时不见子<b class='flag-5'>优先级</b>选项

    STM32 MCU通过STM32CubeMx配置NVIC怎么没有中断优先级选项

    时,不难发现一个问题,那就是怎么没有中断优先级【或称响应优先级、副优先级等】的配置?!【当然,
    发表于 09-09 09:25 785次阅读
    STM32 MCU通过STM32CubeMx<b class='flag-5'>配置</b>NVIC怎么没有<b class='flag-5'>中断</b>子<b class='flag-5'>优先级</b>选项

    PLIC管理的中断优先级和RISC-V本身的机器定时器以及软中断中断优先级问题

    请问PLIC管理的外设中断优先级和RISC-V本身的机器定时器以及软中断谁的优先级会更高? 机器定时器中断和软
    发表于 06-25 19:05

    什么是优先级反转

    和中优先级的TaskB由于其它原因挂起了,低优先级的TaskC获得信号量,正在独享这个资源,这时候高优先级TaskA就绪了,抢占了TaskC,高优先
    的头像 发表于 04-24 13:01 1593次阅读
    什么是<b class='flag-5'>优先级</b>反转