STM32外部中断的抢占优先级和响应优先级

308 阅读2分钟

STM32外部中断的抢占优先级和响应优先级

STM32的中断源具有两种优先级:一种为抢占优先级;另一种为响应优先级(亚优先级),其属性编号越小,表明它的优先级别越高。

抢占是指打断其他中断的属性,即低抢占优先级的中断A可以被高抢占优先级的中断B打断,执行完中断服务函数B后,再返回继续执行中断服务函数A,由此会出现中断嵌套。

响应属性则应用在抢占属性相同的情况下,即当两个中断源的抢占优先级相同时,分以下几种情况处理:

  1. 如果两个中断同时到达,则中断控制器会先处理响应优先级高的中断。
  2. 当一个中断到来后,如果正在处理另一个中断,则这个后到的中断就要等到前一个中断处理完之后才能被处理(高响应优先级的中断不可以打断低响应优先级的中断)。
  3. 如果它们的抢占式优先级和响应优先级都相等,则根据它们在中断表中的排位顺序决定先处理哪一个。

举例说明

image.png

现在有3个中断向量,如上图,

  1. 若内核正在执行C的中断服务函数,则它能被抢占优先级更高的中断A打断,由于B和C的抢占优先级相同,所以C不能被B打断。
  2. 但如果B和C中断是同时到达的,内核就会首先执行响应优先级别更高的B中断。
  3. 如果B和C中有一个先到,不管谁的响应优先级高,都不能打断,只能等待。