FreeRTO学习:任务挂起和恢复

 注:在使用大多数功能时,FreeRTOS都要将对应的宏置为1,具体的需要查看FreeRTOS官方文档。

任务的挂起类似于暂停,可进行恢复。

FromlSR后缀的函数是专用于中断的API函数。

任务切换流程图

所有任务只有进入就绪态后才可以进入运行态。

函数基础

任务挂起

1.vTaskSuspend():

1 | void vTaskSuspend(TaskHandle_t xTaskToSuspend)


参数

  • xTaskToSuspend:待挂起的任务句柄。

   当传入参数为NULL时,则为挂起任务自身。

使用步骤:

1.将对应宏置为 1

2.定义函数的入口参数

任务恢复

2.vTaskResume():

void vTaskResume(TaskHandle_t xTaskToResume)

参数

  • xTaskToResume:待恢复任务的任务句柄

任务无论被挂起多少次,只需要任务中调用函数回复一次,则任务进入就绪态。

 任务恢复(中断)

xTaskResumeFromISR():

BaseType_t xTaskResumeFromISR(TaskHandle_t xTaskToResume)

参数

  • xTaskToResume:待恢复任务的任务句柄

返回值为pdTRUE表示任务恢复后需要进行任务切换。

注:中断服务函数调用API函数时,中断优先级不能高于FreeRTOS所管理的最高优先级。

FreeRTOSS所管理的优先级范围为5-15,也就是不能管理优先级为0-4的高优先级。

也就是在配置中断时,需要将NVIC分组配置为分组4(全部设置为抢占式优先级),且选择低于4的抢占优先级。

函数的内部实现

函数的内部实现如果需要详细了解,建议查看源码。

任务挂起

注:运行过程中的任务切换是通过触发PendSV的中断进行的

任务恢复

任务恢复(中断)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值