STM32
直播中

石正厚

7年用户 1109经验值
私信 关注
[问答]

中断优先级配置的函数有哪几种

中断优先级配置的函数有哪几种?
怎样去比较抢占优先级与响应优先级呢?

回帖(1)

李牧喜

2021-10-19 11:44:37
  一、中断优先级配置的函数:
  1. NVIC_IRQChannelPreemptionPriority 配置抢占优先级
  2.NVIC_IRQChannelSubPriority 配置响应优先级
  二、抢占优先级与响应优先级的描述:
  1、抢占优先级不同,会涉及到中断嵌套,抢占优先级高的会优先抢占优先级低的,优先得到执行。(注意:优先级数字越小,优先级越高)
  2、抢占优先级相同,不涉及到中断嵌套,响应优先级不同,响应优先级高的先响应。(例如:两个中断同时响应,这里就会先执行响应优先级高的那个中断)(注意:优先级数字越小,优先级越高)
  3、抢占优先级和响应优先级都相同,则比较它们的硬件中断编号,中断编号越小,优先级越高。(硬件中断编号从中断向量表当中查看)
  三、中断优先级分组:
  
  四、 组别:0》1》2》3》4
  组别优先顺序(第0组优先级最强,第4组优先级最弱):
  NVIC_PriorityGroup_0 》 NVIC_PriorityGroup_1 》 NVIC_PriorityGroup_2 》 NVIC_PriorityGroup_3 》 NVIC_PriorityGroup_4
  五、抢占优先级和响应优先级执行过程举例:
  
  ① 实验现象:中断B(C)执行时,A中断到来,则A打断B(C)中断,执行A中断(即中断嵌套)。
  结果说明:0级抢占优先级》1级抢占优先级,以此类推,0》1》2.。..。..》15
  拓展:抢占优先级最多可以嵌套15次
  ② 实验现象:中断B(C)执行时,C(B)中断到来,则执行当前的中断B(C),执行完当前中断B(C)后再执行中断C(B)。
  结果说明:当B(C)中断的抢占优先级等级相同时,执行中的中断B(C)不能被中断C(B)打断,必须等待当前中断B(C)执行完再执行中断C(B)。与响应优先级无关。
  ③ 现象:当B、C中断同时到来时,首先响应中断B。
  结果说明:响应优先级大小:0》1》2.。..。.》15
  ④ 如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分