1.任务的挂起与恢复的API函数
- vTaskSuspend() ——挂起任务(类似暂停,可恢复,但删除任务,无法恢复)
- vTaskResume() ——恢复被挂起的任务
- xTaskResumeFromISR()—— 在中断中恢复被挂起的任务
1.1.任务挂起函数vTaskSuspend()
void vTaskSuspend(TaskHandle_t xTaskToSuspend)
- 形参:待挂起任务句柄
- 此函数用于挂起任务,使用时需将宏 INCLUDE_vTaskSuspend 配置为 1。
- 无论优先级如何,被挂起的任务都将不再被执行,直到任务被恢复 。
- 当传入的参数为NULL,则代表挂起任务自身(当前正在运行的任务)
1.2.任务恢复函数vTaskResume()
void vTaskResume(TaskHandle_t xTaskToSuspend)
- 形参:待恢复任务句柄
- 使用该函数注意宏:INCLUDE_vTaskSuspend必须定义为 1
- 注意:任务无论被 vTaskSuspend() 挂起多少次,只需在任务中调用 vTakResume() 恢复一次,就可以继续运行。且被恢复的任务会进入就绪态!
1.3.任务恢复函数(中断)xTaskResumeFromISR()
BaseType_t xTaskResumeFromISR(TaskHandle_t xTaskToResume)
- 形参:待恢复任务句柄
- 返回值:pdTRUE任务恢复后需要进行任务切换;pdFALSE任务恢复后不需要进行任务切换
- 使用该函数注意宏:INCLUDE_vTaskSuspend 和 INCLUDE_xTaskResumeFromISR 必须定义为 1
- 该函数专用于中断服务函数中,用于解挂被挂起任务
- 中断服务程序中要调用freeRTOS的API函数则中断优先级不能高于FreeRTOS所管理最高优先级
2.任务挂起与恢复实验
- 实验目的:学会 使用FreeRTOS中的任务挂起与恢复相关API函数:vTaskSuspend( )、
vTaskResume( )、xTaskResumeFromISR( ) - 实验设计:将设计四个任务:start_task、task1、task2、task3
start_task:用来创建其他的三个任务
task1:实现LED0每500ms闪烁一次
task2:实现LED1每500ms闪烁一次
task3:判断按键按下逻辑,KEY0按下,挂起task1,按下KEY1在任务中恢复task1
EXTI:按下KEY2,在中断中恢复task1(外部中断线实现)
3.任务挂起和恢复API函数解析
3.1.任务挂起函数vTaskSuspend()函数解析
3.2.任务恢复函数vTaskResume() 函数解析
文章来源:https://www.toymoban.com/news/detail-641243.html
3.3.任务恢复函数(中断)xTaskResumeFromISR()函数解析
文章来源地址https://www.toymoban.com/news/detail-641243.html
到了这里,关于【学习FreeRTOS】第5章——FreeRTOS任务挂起与恢复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!