vTaskDelay
[任务控制]
task. h void vTaskDelay( const TickType_t xTicksToDelay );
必须将 INCLUDE_vTaskDelay 定义为 1,此函数才可用。
请参阅 RTOS 配置文档,了解更多信息,
按给定的 tick 数延迟任务。任务保持阻塞的实际时间取决于 tick 频率。
常量 portTICK_PERIOD_MS 配合 tick 周期分辨率可用于从 tick 频率计算实际时间。
vTaskDelay() 会指定任务想要取消阻塞的时间,该时间是相对于 vTaskDelay() 被调用的时间。 例如,如果指定
时间块为 100 个 tick,那么在调用 vTaskDelay() 100 个 tick 后任务会取消阻塞。 vTaskDelay() 并不会因此提供一种
控制周期性任务频率的好办法,因为途径代码的路径以及其他任务和中断活动将影响
vTaskDelay() 被调用的频率,进而会影响下一个任务执行的时间。 请参阅 vTaskDelayUntil(),了解为
便于任务以固定频率执行而设计的替代 API 函数。 它通过指定调用任务应取消阻塞的绝对时间(而非相对时间)来实现这一点。
- 参数:
-
xTicksToDelay | 调用任务应阻塞的 tick 周期数。 |
用法示例:
void vTaskFunction( void * pvParameters )
{
/* Block for 500ms. */
const TickType_t xDelay = 500 / portTICK_PERIOD_MS;
for( ;; )
{
/* Simply toggle the LED every 500ms, blocking between each toggle. */
vToggleLED();
vTaskDelay( xDelay );
}
}
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|