- 对于FreeRTOS最好不去用中断嵌套,中断嵌套会增加堆栈空间的使用,因为每个中断服务程序都需要保存和恢复寄存器状态,这可能会耗尽有限的堆栈空间,从而导致系统故障。以及中断嵌套时,不同的中断服务程序可能会竞争访问共享资源,从而增加死锁的风险。这可能会导致系统出现故障或瘫痪。
- FreeRTOS的中断的嵌套和竞争:中断的嵌套(Interrupt Nesting)是指当一个中断正在执行时,可以被另一个更高优先级的中断所中断。中断可以打断具有较低逻辑优先级的任何中断,但是中断不能打断具有相同或更高逻辑优先级的任何中断。
- HAL_NVIC_SetPriorityGrouping() 函数来配置优先级分组方式,就是确定不同中断的抢占优先级与子优先级的关系。NVIC_PriorityGroup_4 的话,那 4 位优先级就都全是抢占优先级了,没有子优先级,也就是说下面的SubPriority 子优先级都应该为0。