混用导致漂移的本质是两者时间基准不同:vTaskDelay(x) 从调用时刻起相对延时,会把本次执行耗时计入下一周期;vTaskDelayUntil(&last, period) 以 last 为绝对基准,保证固定周期。若同一任务交替使用,last 只在 Until 调用时更新,而 Delay 期间的时间推进不被记录,导致 Until 的基准落后于真实时间,周期被拉长。实测中常见现象是:任务本应 10ms 周期,混用后平均周期变为 10ms+执行时间,且抖动累积。建议:周期任务统一用 vTaskDelayUntil,并确保 last 变量在任务初始化时用 xTaskGetTickCount() 赋值;非周期延时才用 vTaskDelay。若需动态调整周期,直接修改 period 参数并保持 Until 调用,不要插入 Delay。排查时用 GPIO 翻转+示波器或 DWT 计数器测量相邻唤醒间隔,对比 xTaskGetTickCount 差值,即可定位漂移来源。