STM32的中断优先级需要先设定中断优先级分组,一般由如下的函数完成; w* J$ ], O! r6 I; l& O /* Set Interrupt Group Priority */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);! C1 o+ K2 Z- s% x* v5 ?- H 此函数最终的结果是设定STM32的某个寄存器,不用理会是具体的那个寄存器。8 u5 e8 v" A9 u4 T# _ ; h* S9 h- H! Y 下图为设定中断优先级分组后使用中断时可以设定的抢占优先级以及子优先级的具体情况,引自安富莱FreeRTOS教程。 , R! ~7 h0 b7 U a: ^ FreeRTOS一般使用NVIC_PRIORITYGROUP_4这组优先级设置,因此中断可以设定为0~15的抢占优先级数值,数值越小,优先级越高。$ I+ k. L3 H4 v& L$ m FreeRTOS的任务优先级的数值与优先级级别的关系为:任务优先级的数值越小,优先级越低,即数值低的优先级任务能被数值高的优先级任务抢夺CPU资源,空闲任务的优先级数值为0。 " e6 H2 z2 f% z; r5 H |