stm32 优先级分组

 

一、中断优先级配置的函数:

1. NVIC_IRQChannelPreemptionPriority                            配置抢占优先级

2.NVIC_IRQChannelSubPriority                                        配置响应优先级

 

二、抢占优先级与响应优先级的描述:

1、抢占优先级不同,会涉及到中断嵌套,抢占优先级高的会优先抢占优先级低的,优先得到执行。(注意:优先级数字越小,优先级越高)

2、抢占优先级相同,不涉及到中断嵌套,响应优先级不同,响应优先级高的先响应。(例如:两个中断同时响应,这里就会先执行响应优先级高的那个中断)(注意:优先级数字越小,优先级越高)

3、抢占优先级和响应优先级都相同,则比较它们的硬件中断编号,中断编号越小,优先级越高。(硬件中断编号从中断向量表当中查看)
 

三、中断优先级分组:

stm32 优先级分组_第1张图片

 

四、 组别:0>1>2>3>4

    组别优先顺序(第0组优先级最强,第4组优先级最弱):

NVIC_PriorityGroup_0  > NVIC_PriorityGroup_1 > NVIC_PriorityGroup_2 > NVIC_PriorityGroup_3 > NVIC_PriorityGroup_4

 

五、抢占优先级和响应优先级执行过程举例:

stm32 优先级分组_第2张图片

 ①   实验现象:中断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

  ④  如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。

 

 

 

 

你可能感兴趣的:(程序,stm32)