vTaskDelay() 是 FreeRTOS 实时操作系统中用于任务延时的函数。它的参数是一个以操作系统时钟节拍为单位的延时时间。

具体的延时时间取决于 FreeRTOS 配置的操作系统节拍周期 (tick period) 和所传递的延时时间参数。在 FreeRTOS 中,操作系统节拍周期可以通过 configTICK_RATE_HZ 宏定义进行配置,默认值为 1000Hz(即每秒 1000 个节拍)。因此,如果传递给 vTaskDelay() 的延时时间参数为 1,则将延时 1 个操作系统节拍周期。

示例用法:

#include "FreeRTOS.h"
#include "task.h"

void vTaskFunction(void *pvParameters) {
    // 延时 500 毫秒
    vTaskDelay(pdMS_TO_TICKS(500));
    
    // 其他任务处理代码
}

int main(void) {
    // 初始化 FreeRTOS
    
    // 创建任务
    xTaskCreate(vTaskFunction, "Task", configMINIMAL_STACK_SIZE, NULL, 1, NULL);
    
    // 启动任务调度器
    vTaskStartScheduler();
    
    // 不应该执行到这里
    
    while (1) {
        // 主循环处理其他事物
    }
    
    return 0;
}

在上述示例中,vTaskDelay(pdMS_TO_TICKS(500)) 将延时 500 毫秒,其中 pdMS_TO_TICKS() 是一个宏,用于将毫秒转换为操作系统节拍周期。

请注意,具体的延时时间可能会受到系统负载和其他任务的影响,因此实际的延时时间可能会略有偏差。

FreeRTOS 中 vTaskDelay() 延时时间详解

原文地址: https://www.cveoy.top/t/topic/Rtv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录