stm32中断优先级

编 号 分配情况
7 0:4 无抢先式优先级,16 个子优先级
6 1:3 2 个抢先式优先级,8 个子优先级
5 2:2 4 个抢先式优先级,4 个子优先级
4 3:1 8 个抢先式优先级,2 个子优先级
3/2/1/0 4:0 16 个抢先式优先级,无子优先级

中断分组

在一个系统中,通常只使用上面 5 种分配情况的一种,具体采用哪一种,需要在初始化
时写入到一个 32 位寄存器 AIRC(Application Interrupt and Reset Control Register)
的第[10:8]这 3 个位中。这 3 个 bit 位有专门的称呼:PRIGROUP。

比如你将 0x05(即上表中的编号)写到 AIRC 的[10:8]中,那么也就规定了你的系统中只
有 4 个抢先式优先级,相同的抢先式优先级下还可以有 4 个不同级别的子优先级。如下:

  0 号抢先优先级   0 号子优先级  
  1 号抢先优先级   1 号子优先级  
  2 号抢先优先级   2 号子优先级  
  3 号抢先优先级   3 号子优先级

具体优先级的确定和嵌套规则。ARM cortex_m3(STM32)规定
a/ 只能高抢先优先级的中断可以打断低抢先优先级的中断服务,构成中断嵌套。
b/ 当 2(n)个相同抢先优先级的中断出现,它们之间不能构成中断嵌套,但 STM32 首先响应子优先级高的中断。
c/ 当 2(n)个相同抢先优先级和相同子优先级的中断出现,STM32 首先响应中断通道所对应的中断向量地址低的那个中断(见 ROM0008,表 52)。
具体一点:
0 号抢先优先级的中断,可以打断任何中断抢先优先级为非 0 号的中断;1 号抢先优先级的中断,可以打断任何中断抢先优先级为 2、3、4 号的中断;……;构成中断嵌套。
如果两个中断的抢先优先级相同,谁先出现,就先响应谁,不构成嵌套。如果一起出现(或挂在那里等待),就看它们 2 个谁的子优先级高了,如果子优先级也相同,就看它们的中断向量位置了。 


猜你喜欢

转载自www.cnblogs.com/caiya/p/9275525.html