低功耗时遇到一个问题:如果掉电休眠,则时间无法继续,唤醒后的时间就不对了。
而我要面临的使用场景,是需要知道大致时间的。
一种办法,就是引入 RTC 实时时钟模块,掉电可以使用钮扣电池供电,继续走时。可是,这种模块为了添加钮扣电池,板子都比较大。
还有种办法,就是利用 WDT 看门狗定时触发的机制,累积休眠时长。等最后唤醒时,加上这个累积时长,就能换算出大致准确的时间。
本来,我还想完善下细节,比如在休眠中途被其他方式唤醒时,需要进一步校正这个休眠时间。可是,太复杂了。最后,用了个简单的办法解决:累加每次开始休眠时,加半个休眠时长。这样,可以对冲中途休眠的情况,明显改善结果。