平时系统没事一直DEEPSLEEP,系统tick不跑后,通过什么来唤醒的呢?

今天爱分享给大家带来平时系统没事一直DEEPSLEEP,系统tick不跑后,通过什么来唤醒的呢?,希望能够帮助到大家。

答:这个deepsleep是我们假定的最深度的睡眠模式(如STOP2、STOP模式),并不是强加给用户的,用户可以在drv_pm.c适配时,deepsleep 场景下什么都不干!!或进入wfi 等轻睡眠模式。

这里强调:用户的场景模式实现,用户说了算!!
用户把deepsleep,按照stm32l4例程改为stop2(深睡眠!),发现无法唤醒了,发现systick(系统默认tick)不工作了!!怎么办?这里假定你确实需要深睡眠,通过阅读【MCU datasheet与参考手册】,了解到STOP2下的唤醒源(外部中断、RTC alarm、Lptimer、复位等),相信,你清楚了如何唤醒。
PM框架,使用Lptimer(低功耗定时器,如stm32l4 lptimer,任何可以在睡眠模式下工作的定时器都可以成为low power timer),进行周期性唤醒,补偿系统的tick,接管systick没完成的soft timer定时工作。
注意systick 与 lptimer是在进出睡眠模式是自动切换的,用户感知觉得软定时器业务一直在正常的工作。
lptimer的定时时间,来自用户定义的软定时器定时时间,lptimer不需要用户设置时间!
如果用户没有任何定时器,lptimer会较长时间周期性醒来(16位定时器的话,1ms一个lptimer tick,65.535秒左右)。

人已赞赏
软件

R语言 Warning: unable to move temporary installation 报错【解决办法】

2020-10-31 0:03:42

软件

rt_thread_mdelay(4000),工作的原理【详解】

2020-11-5 13:57:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
'); })();