vTaskDelay
和 xTaskDelayUntil
是 FreeRTOS 提供的两种不同任务延迟函数,各自有其适用的场景和优缺点。vTaskDelay
适用于简单的延迟操作,而 xTaskDelayUntil
提供了精确的周期控制能力。在设计 FreeRTOS 应用程序时,根据任务的时间要求选择合适的延迟机制,将有助于优化系统性能和实现目标。
1. vTaskDelay
功能与实现
vTaskDelay
是 FreeRTOS 提供的标准任务延迟函数,用于使当前任务进入阻塞状态一段时间。调用 vTaskDelay
后,当前任务将进入阻塞状态,等待指定的时间到达后重新进入就绪状态,从而允许其他任务获得 CPU 执行机会。
语法
void vTaskDelay(const TickType_t xTicksToDelay);
xTicksToDelay
:延迟的时间长度,以系统时钟节拍 (ticks) 为单位。
使用示例
void vATask(void *pvParameters)
{
for( ;; )
{
// 执行任务的操作
// ...
// 延迟 1000 个 ticks
vTaskDelay(pdMS_TO_TICKS(1000));
}
}