推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

实验65_vTaskDelay与vTaskDelayUntil精度对比.docx

更新时间:2026-09-13 12:03:08 大小:37K 上传用户:烟雨查看TA发布的资源 标签:FreeRTOSvTaskDelayvTaskDelayUntil任务延时精度周期性任务 下载积分:2分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

实验 65:vTaskDelay 与 vTaskDelayUntil 精度对比

实验说明

实验概述

FreeRTOS 提供了两种延时函数:vTaskDelay() 是相对延时,延时时间从调用时刻开始计算;vTaskDelayUntil() 是绝对延时,延时到指定的绝对时间点。对于周期性任务,vTaskDelayUntil() 能提供更精确的周期控制,不受任务执行时间抖动的影响。

实验原理

vTaskDelay(Ticks) 使任务阻塞 Ticks 个节拍,但实际阻塞时间 = Ticks + 任务被唤醒后到获得 CPU 的时间。如果任务执行时间有波动,周期会累积误差。vTaskDelayUntil(&xLastWakeTime, Ticks) 将任务阻塞到 xLastWakeTime + Ticks 的绝对时间点,即使任务执行时间有波动,下一个唤醒时间点也是固定的,周期精度更高。

实验现象

两个任务分别使用 vTaskDelay 和 vTaskDelayUntil,以相同的周期运行,但一个任务内部有波动负载,观察两者的周期差异。

完整代码

  c
#include "FreeRTOS.h"
#include "task.h"
#include <stdio.h>

static void vDelayTask(void *pvParameters)
{
    TickType_t xPreviousWakeTime;
    uint32_t ulCount = 0;

    for (;;)
    {
        ulCount++;


部分文件列表

文件名 大小
实验65_vTaskDelay与vTaskDelayUntil精度对比.docx 37K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载