STM32优先级
STM32中有两个关于优先级的概念,分别是抢占式优先级和响应优先级,每个中断源都需要被指定这两种优先级,其属性编号越小,表明它的优先级别越高。下面将先大致介绍一下这两个优先级的概念。
首先,如何确定优先级等级?
具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套在低抢占式优先级的中断中。当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。
总结下便是:抢占式优先级>响应优先级>中断表中的排位顺序
第0组优先级最高,第4组优先级最低。
以选择NVIC_PriorityGroup_1为例,那么抢占式优先级便占一位,也就是说可以有2 1 个级别,可以设置为0和1,而响应优先级则占3位,也就是说可以有2 3 个选择,可以设置为0~7;总共来说就可以区别>16种优先级。举个例子,假如现在有4个外部中断,还有一个EXTI9_5中断,那么如果选择优先级分组为第1组,那么抢占式优先级便只有两种,5个中断就至少有3个在抢占式优先级上是相同的优先级上,其他两个在令一优先级别。接着设置响应优先级可以有8种选择;假如现在同时有两个抢占式优先级别相同的中断发生,那么处理的顺序是谁的响应优先级高则谁优先进入中断,另外这点是需要注意的,如果此时进入这个中断之后又来了一个抢占式优先级相同但是响应优先级更高的中断,这时也是不会打断已有的中断的。
参考链接:
STM32的优先级NVIC_PriorityGroupConfig的理解及其使用
【转】STM32中的抢占优先级、响应优先级概念
2023-06-12 广告