FreeRTOS 中断处理和中断安全API
FreeRTOS的任务优先级是数值越大,优先级越高,0是最低优先级;而Cortex-M的中断优先级是数值越大,优先级越低,0是最高优先级。
FreeRTOSConfig.h中的宏configLIBRARY_LOWEST_INTERRUPT_PRIORITY表示最低中断优先级,从FreeRTOS的demo中复制出来的这个头文件中这个宏的值是15,即从0到15一共16个优先级。Cortex-M的中断优先级有抢占优先级和子优先级两个,但FreeRTOS中没有提供处理子优先级的功能,只使用抢占优先级。因此需要将STM32的中断优先级组设置为16个抢占优先级、1个子优先级,即第四组中断优先级组。
1//优先级组是STM32中优先级分配方式的选择,"组"这个翻译可能不太合适
2//使用第四组中断优先级组
3NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
4//STM32有0到4共五组优先级组