在FreeRTOS中,vTaskDelayUntil用于固定周期任务,它基于上一次唤醒时间计算绝对延迟;而vTaskDelay是相对延迟,从调用时刻开始计时。混用会导致周期漂移:例如任务本应每10ms运行一次,但若在周期任务中交替使用两者,vTaskDelay的调用会引入额外延迟(如任务执行时间),使下一次vTaskDelayUntil的基准时间被推后,累积误差。排查时,首先检查任务代码中是否同时出现两个API;其次用GPIO翻转或示波器测量任务实际周期,对比预期;最后统一使用vTaskDelayUntil并确保传入的PreviousWakeTime变量正确初始化且仅在该任务中修改。若需动态调整周期,应重新计算基准时间或使用软件定时器。