1、Cortext-M4有240个8-bit的寄存器,即IP[240],IP表示interrupt priority,中断优先级。
每个寄存器控制一种中断源。
2、STM32F4使用了其中的91个,即IP[0]~IP[90],每个寄存器只使用高4bit(bit7~bit4),这4个bit
可以表示抢占优先级+响应优先级。
3、STM32F4通过寄存器SCB->AIRCR的bit10~bit8将中断分组:
分组 | AIRCR[10:8] | IP寄存器 | 说明 |
0 | b'111 | [-][XXXX] | 4位都是响应优先级 |
1 | b'110 | [X][XXX] | 1位抢占优先级;3位响应优先级 |
2 | b'101 | [XX][XX] | 2位抢占优先级;2位响应优先级 |
3 | b'100 | [X][XXX] | 3位抢占优先级;1位响应优先级 |
4 | b'011 | [XXXX][-] | 4位都是抢占优先级 |
4、AIRCR的分组,对所有91个中断源都有效。
5、优先级的值越小,优先级越高;
6、抢占优先级高的,可以打断抢占优先级低的中断;但响应优先级高的不能打断响应优先级低的。