六、FreeRTOS学习笔记-任务挂起和恢复

任务的挂起与恢复的API函数介绍

API函数 描述
vTaskSuspend() 挂起任务
vTaskResume() 恢复被挂起的任务
xTaskResumeFromISR() 在中断中恢复被挂起的任务

1、挂起任务类似暂停,可恢复; 删除任务,无法恢复
2、恢复是恢复被挂起任务
3、带FromISR后缀是在中断函数中专用的API函数
任务挂起函数介绍
void vTaskSuspend(TaskHandle_t xTaskToSuspend)

形参 描述
xTaskToSuspend 待挂起任务的任务句柄

此函数用于挂起任务,使用时需将宏 INCLUDE_vTaskSuspend 配置为 1。
无论优先级如何,被挂起的任务都将不再被执行,直到任务被恢复 。
注意:当传入的参数为NULL,则代表挂起任务自身(当前正在运行的任务)

任务恢复函数介绍(任务中恢复)
任务中恢复被挂起函数:void vTaskResume(TaskHandle_t xTaskToResume)

形参 描述
xTaskToResume 待恢复任务的任务句柄

使用该函数注意宏:INCLUDE_vTaskSuspend必须定义为 1
注意:任务无论被 vTaskSuspend() 挂起多少次,只需在任务中调用 vTakResume() 恢复一次,就可以继续运行。且被恢复的任务会进入就绪态!

任务恢复函数介绍(中断中恢复)
中断中恢复被挂起函数: BaseType_t xTaskResumeFromISR(TaskHandle_t xTaskToResume)

形参 描述
xTaskToResume 待恢复任务的任务句柄

函数:xTaskResumeFromISR返回值描述如下:

返回值 描述
pdTRUE 任务恢复后需要进行任务切换
pdFALSE 任务恢复后不需要进行任务切换

使用该函数注意宏:INCLUDE_vTaskSuspend 和 INCLUDE_xTaskResumeFromISR 必须定义为 1
该函数专用于中断服务函数中,用于解挂被挂起任务
注意:中断服务程序中要调用freeRTOS的API函数则中断优先级不能高于FreeRTOS所管理的最高优先级


posted @ 2024-05-31 11:27  吃猫的渔  阅读(124)  评论(0编辑  收藏  举报