在FreeRTOS中,任务延迟是通过vTaskDelay()函数实现的。该函数会挂起当前任务一段时间,并将控制权交给另一个任务。
vTaskDelay()函数采用一个以Tick为单位的参数,表示要延迟的时间。如果调用vTaskDelay(1000)函数,则当前任务将被挂起1秒钟(假设系统Tick率为1kHz)。
以下是一个简单的示例,演示如何使用vTaskDelay()函数来延迟任务的执行:
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
void task(void *pvParameters)
{
while(1) {
// 执行任务操作
vTaskDelay(pdMS_TO_TICKS(500)); // 延迟500毫秒
}
}
void app_main()
{
xTaskCreate(task, "Task", configMINIMAL_STACK_SIZE, NULL, 1, NULL);
}
在这个例子中,我们创建了一个名为task的任务,它会执行一些操作,并在每次操作之间延迟500毫秒。我们使用pdMS_TO_TICKS()宏将毫秒转换为以Tick为单位的时间。