标签:编号 优先 初始 app 写入 height inter normal ica
编 号 | 分配情况 | |
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 个谁的子优先级高了,如果子优先级也相同,就看它们的中断向量位置了。
标签:编号 优先 初始 app 写入 height inter normal ica
原文地址:https://www.cnblogs.com/caiya/p/9275525.html