Bootstrap

FreeRTOS学习笔记—任务挂起与恢复

任务挂起与恢复

FreeRTOS挂起和恢复任务的相关API函数

FreeRTOS 中用于挂起和恢复任务的 API 函数如下表所示:

函数描述需要在FreeRTOSconfig.h中设置
vTaskSuspend()挂起任务INCLUDE_vTaskSuspend 配置为 1
vTaskResume()恢复被挂起的任务将宏 INCLUDE_vTaskSuspend 配置为 1
xTaskResumeFromISR()在中断中恢复被挂起的任务INCLUDE_xTaskResumeFromISR 配置为 1
挂起函数 vTaskSuspend()
函数原型:void vTaskSuspend(TaskHandle_t xTaskToSuspend);

返回值:

作用:此函数用于挂起任务,无论优先级如何,被挂起的任务都将不再被执行,直到任务被恢复。

此函数并不支持嵌套,不论使用此函数重复挂起任务多少次,只需调用一次恢复任务的函数,那么任务就不再被挂起。

在任务中恢复函数 vTaskResume()
函数原型: void vTaskResume(TaskHandle_t xTaskToResume);

返回值:

作用:此函数用于在任务中恢复被挂起的任务,不论一个任务被函数vTaskSuspend()挂起多少次,只需要使用函数 vTakResume()恢复一次,就可以继续运行。

在中断中恢复函数 xTaskResumeFromISR()

**函数原型:** BaseType_t xTaskResumeFromISR(TaskHandle_t xTaskToResume)**返回值:** pdTRUE或者pdFALSE

pdTRUE:任务恢复后需要进行任务切换

pdFALSE:任务恢复后不需要进行任务切换

作用: 此函数用于在中断中恢复被挂起的任务,不论一个任务被函数 vTaskSuspend()挂起多少
次,只需要使用函数 vTakResumeFromISR()恢复一次,就可以继续运行

注意:中断服务程序中要调用freeRTOS的API函数,则中断优先级不能高于FreeRTOS所管理的最高优先级**

*FreeRTOS所管理的最高优先级为1——5
;