文章目录
- STM32F103的NVIC
- STM32F103 的中断优先级分组
STM32F103的NVIC
-
CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。
-
CM3中每个中断通道都具备自己的8位中断优先级控制字节, 但STM32 并没有使用 CM3 内核的全部东西,STM32F103中只使用4位,高4位有效。
- 用于表达优先级的高4位又被分为组成抢占式优先级和响应式优先级,每个中断源都需要被指定这两种优先级。
-
STM32 有 84 个中断,包括 16 个内核中断和 68 个可屏蔽中断,具有 16 级可编程的中断优先级。
- 我们常用的就是这 68 个可屏蔽中断,但是 STM32 的 68 个可屏蔽中断,在 STM32F103 系列上面,又只有 60 个(在 107 系列才有 68 个)。
具体表格见stm32中文参考手册9.1.2。所有中断都在了。
STM32F103 的中断优先级分组
STM32 将中断分为 5 个组,组 0~4。该分组的设置是由内核外设 SCB 的应用程序中断及复位控制寄存器 AIRCR 的 PRIGROUP[10:8]bit10~8 位决定
例如组设置为 3,那么此时所有的 60 个中断,每个中断的中断优先寄存器的高四位中的最高 3 位是抢占优先级,低 1 位是响应优先级。
- 每个中断,你可以设置抢占优先级为 0~7,响应优先级为 1 或 0。
- 抢占优先级的级别高于响应优先级。
- 数值越小所代表的优先级就越高。
优先级原则
- 第一,如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;
- 第二,高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。