osDelay是相对延时(从调用时刻开始计时

🔍 溯源 ✍️ Jack | 📅 2025-09-08 | 👍 3 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/RTOS #技术/定时器 #质量/精华

原帖 | Jack | 2025-09-08 21:18 | 👍3 | 阅读约1

osDelay是相对延时(从调用时刻开始计时),osDelayUntil是绝对延时(固定时间间隔执行)。用按时吃饭举例:
1.osDelay(相对延时)
· 相当于“吃完早饭后等4小时再吃午饭”——实际午饭时间取决于早饭结束时间。
· 问题:若早饭吃得慢(任务执行超时),午饭会推迟,导致三餐时间漂移。
2.osDelayUntil(绝对延时)
· 相当于“严格在7:00、12:00、18:00吃饭”——无论早饭吃多久,午饭仍在12:00准时开始。
· 优势:自动补偿任务执行时间,确保周期稳定。核心区别:
· 防漂移能力:osDelayUntil通过记录上一次唤醒时间,强制按固定周期执行,适合需严格定时的任务(如传感器采样)。
· 初始化要求:osDelayUntil首次调用前需设置基准时间(如
xLastWakeTime = osKernelGetTickCount())。> 在嵌入式开发中,周期性任务(如定时采集数据)优先用osDelayUntil,避免时间累积误差;单次延时用osDelay更简单。


相关笔记