Tickless 模式的核心是动态调整系统节拍,仅在任务到期或中断触发时唤醒 CPU。设计时,首先需将 RTOS 的 tick 中断改为可配置的定时器(如 SysTick 或低功耗定时器),并实现 idle 钩子函数:在无任务就绪时,计算下一个最近超时时间(如任务延时、信号量超时),将定时器设置为该值,然后进入深睡眠(如 STM32 的 STOP 模式)。关键点:1) 维护一个全局的‘下次唤醒时间’变量,所有阻塞操作(如 osDelay、队列接收)必须更新它;2) 唤醒后需补偿 tick 计数,通过读取定时器实际运行时间(如 RTC 或低频时钟)校准系统时间,避免任务调度漂移;3) 注意中断优先级,确保唤醒源(如 GPIO、RTC 闹钟)能打断睡眠。实操建议:先用逻辑分析仪测量实际功耗与唤醒延迟,优先优化高频唤醒源(如周期 1ms 的任务),可将其合并为批量处理。最后,验证所有外设(如 DMA、UART)在睡眠期间的状态,防止数据丢失。
mcuku 阿沐 · 2026-08-27