• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32中断问题

15345338508 2018-08-13 浏览量:807
STM32中断的抢占优先级和响应优先级的区别是什么?在程序设计中怎样划分和使用?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 区别:高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。 抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。 抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。 如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;

    如何使用:优先级的使用只需在主函数开始时,先设置中断优先级分组,然后分配即将使用的中断优先级的等级,即可使用。​

    • 发布于 2018-08-13
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:12
  • 中断的运行先判断抢占优先级再判断响应优先级

    抢占优先级:高抢占优先级中断可以打断低抢占优先级中断先运行

    响应优先级:同等优先级的情况下,高响应优先级可打断低响应优先级先运行。

    响应优先级
    • 发布于2018-08-13
    • 举报
    • 评论 0
    • 1
    • 0

  • 抢占式优先级比响应式优先级高,且数字越小优先级越高
    • 发布于2018-08-13
    • 举报
    • 评论 0
    • 1
    • 0

  • 抢占优先级和响应优先级,其目的就是完成中断嵌套。

    比如现在程序在定时器中断,但是见到来了一个串口中断,并且串口中断的优先级比较高(或者串口口的优先级和定时器优先级相同,但是串口的抢占优先级高),CPU会立即中断当前定时器中断,跳转到串口中断,

    等串口中断完成在回到原来的定时器中断,定时器完成,在跳转到主函数。

    • 发布于2018-08-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 抢占优先级高于,响应优先级,先判断抢占,然后判断响应
    • 发布于2018-08-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 抢占优先级和响应优先级,其实是一个中断所包含的两个优先级,其中前者是对抢占优先级的级别划分,后者是相同抢占优先级的优先级别的划分。
    比如:
    中断A抢占优先级比B高,那么A的中断可以在B里面触发,忽略响应优先级;
    A和B抢占优先级相同,则A、B的响应优先级决定谁先响应;

    • 发布于2018-08-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 两个中断出现时,先比较抢占优先级,一样时比较响应优先级,再一样时先处理先出现的那个
    • 发布于2018-08-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 抢占就是可以中断其他中断的等级 了
    • 发布于2018-08-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断

    (在执行中断服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数A),

    抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。


    而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,

    如果两个中断同时到达, 则先处理响应优先级高的中断, 

    响应属性由NVIC_IRQChannelSubPriority 参数配置。


    在配置优先级的时候,还要注意一个很重要的问题,即中断种类的数量。

    NVIC 只可以配置16 种中断向量的优先级,

    也就是说,抢占优先级和响应优先级的数量由一个4 位的数字来决定,

    把这个4 位数字的位数分配成抢占优先级部分和响应优先级部分。有5 组分配方式:


    第0 组: 所有4 位用来配置响应优先级。即16 种中断向量具有都不相同的响应优先级。

    第1 组:最高1 位用来配置抢占优先级,低3位用来配置响应优先级。

    表示有2 种级别的抢占优先级(0 级,1 级),有8 种响应优先级,即在16 种中断向量之中,

    有8 种中断,其抢占优先级都为0 级,而它们的响应优先级分别为0~7,

    其余8 种中断向量的抢占优先级则都为1 级,响应优先级别分别为0~7。

    第2 组:2 位用来配置抢占优先级,2 位用来配置响应优先级。

    即4 种抢占优先级,4 种响应优先级。

    第3 组:高3 位用来配置抢占优先级,最低1 位用来配置响应优先级。

    即有8 种抢占优先级,2 种响应2 优先级。

    第4组:所有4 位用来配置抢占优先级,

    即NVIC 配置的16 种中断向量都是只有抢占属性,没有响应属性。


    • 发布于2018-08-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 抢占优先级是可以相互打断的,高优先级的可以打断低优先级的,但是响应中断不能打断,先触发的就会先运行
    • 发布于2018-08-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 抢占优先级高的可以打断抢占优先级低的中断,响应优先级不能相互打断,只能先后执行
    • 发布于2018-08-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 抢占优先级决定了中断之间能否相互打断,优先级高的可以打断优先级低的,响应优先级则是不可以相互打断,要按中断的触发顺序执行中断。
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32中断问题