第05章 任务的挂起与恢复
约 248 字小于 1 分钟
2026-01-19
案例需求:
创建三个任务:
task1:实现LED1每500ms闪烁一次。
task2:实现LED2每500ms闪烁一次。
task3:判断按键按下逻辑
SW3按下,挂起task1,SW4按下在任务中恢复task1
SW5按下,挂起调度器,SW6按下恢复调度器相关宏:
INCLUDE_vTaskSuspend 是否启用任务挂起和恢复功能
configUSE_TRACE_FACILITY 是否启用内核跟踪和调试功能,扩展任务状态信息采集
configUSE_STATS_FORMATTING_FUNCTIONS 允许使用格式化函数(如 vTaskList())将调试信息转换为可读文本相关函数:
vTaskSuspend() 挂起任务, 类似暂停,可恢复
vTaskResume() 恢复被挂起的任务
xTaskResumeFromISR() 在中断服务程序中恢复被挂起的任务
vTaskSuspendAll() 挂起调度器
xTaskResumeAll() 恢复调度器
vTaskList() 获取任务状态vTaskList() 的结果:

'B' - 已阻塞
'R' - 准备就绪
'D' - 已删除(等待清理)
'S' - 已挂起
'X' - 运行态