STM32 的中断优先级是一个 8 位值,但通常只使用其中的高 4 位 可以被划分为两部分: - 抢占优先级(Preemption Priority) :决定中断是否可以打断另一个正在执行的中断。
- 子优先级(Subpriority) :当多个中断同时发生时,用于决定它们的执行顺序。
通过设置优先级分组,可以动态调整抢占优先级和子优先级的位数分配。 其分配如下: 配置优先级分组 在 STM32 中,可以通过 HAL_NVIC_SetPriorityGrouping(xxx);函数设置优先级分组。该函数定义在 HAL库中。 设置中断优先级在设置了优先级分组后,可以使用 HAL_NVIC_SetPriority() 函数为每个中断设置具体的优先级。 - HAL_NVIC_SetPriority() 参数如下
- 第一个参数是中断号(俗称句柄)。
- 第二个参数是抢占优先级(主优先级)。
- 第三个参数是子优先级。
|