下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

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.