FreeRTOS(四)——任务挂起与恢复

1 任务挂起与恢复API函数

函数描述
vTaskSuspend()挂起一个任务
vTaskResume()恢复一个任务的运行
vTaskResumeFromeISR()中断服务函数中恢复一个任务的运行

vTaskSuspend()

此函数用于将某个任务设置为挂起态,进入挂起态的任务永远都不会进入运行态。退出挂起态的唯一方法就是调用任务恢复函数vTaskResume()vTaskResumeFromISR()
vTaskSuspend(TaskHandle_t xTaskToSuspend)

参数描述
xTaskToSuspend要挂起的任务的任务句柄,创建任务的时候会为每一个任务分配一个任务句柄。使用vTaskCreate()时的参数pxCretedTask为该任务句柄,使用vTaskCreateStatic()时的返回值为任务句柄。也可以使用xTaskGetHandle()来根据任务名字来获取某个任务的任务句柄。注意!如果参数为NULL的话表示挂起任务自己
返回值描述

vTaskResume()

将一个任务从挂起态恢复到就绪态,只有通过函数vTaskSuspend设置为挂起态的任务才可以使用vTaskResume()恢复!
vTaskResume(TaskHandle_t xTaskToResume)

参数描述
xTaskToResume要恢复的任务句柄
返回值描述

源码中的例子如下:

* Example usage:
   <pre>
 void vAFunction( void )
 {
 TaskHandle_t xHandle;

	 // Create a task, storing the handle.
	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );

	 // ...

	 // Use the handle to suspend the created task.
	 vTaskSuspend( xHandle );

	 // ...

	 // The created task will not run during this period, unless
	 // another task calls vTaskResume( xHandle ).

	 //...


	 // Resume the suspended task ourselves.
	 vTaskResume( xHandle );

	 // The created task will once again get microcontroller processing
	 // time in accordance with its priority within the system.
 }
   </pre>
 * \defgroup vTaskResume vTaskResume
 * \ingroup TaskCtrl
 */
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值