GD32 省电模式有三种如下
之前用过的EFM32 有4中低功耗模式(对比下来就知道EFM32在功耗方面是多么领先)
目前的场景是要循环的读取温度sensor的数据,每隔一定的时间读取一次,并且在整个设备运行期间,要及时的响应按键的长按和短按,首先想到的就是deep sleep模式了。
OK,尝试一下,循环读取
循环读取我采用timer的方式,每隔2s读一次,设定好timer,读取温度之后进入deep sleep 模式
这样可行吗?
通过timer唤醒处于deep sleep模式下的设备?
低功耗模式先看时钟,哪个时钟?
你要用哪个外设唤醒系统,就看那个外设的时钟。注意这里的外设不仅指的是MCU的外设,而且也指的是Cortex M的外设。
deep sleep 模式的介绍:
深度睡眠模式下1.2V域中的所有时钟全部关闭。
timer用的时钟是怎么样的呢?是从哪里来的呢?
看下clock tree
看TIMER的时钟是由CLK_SYS通过AHB和APB2系统分频倍频来的。
所有如果系统时钟,或者AHB,APB时钟关掉的话,timer肯定无法工作的。
那么前面说到的deep sleep 模式下1.2V 电源域中时钟全部关闭,1.2V电源域中有哪些部分呢?
1.2V电源域包括Cortex-M4 AHB ,APB 等部分。
也就是说deep sleep模式下这些clock都是关闭的,timer根本就起不来。所以想用timer来唤醒deep sleep,
送你两个字, 呵(休)呵(想)
那用什么可以唤醒处于deep sleep模式的设备呢?
除了SPEC中说的EXTI还有什么RTC可以吗?你看RTC是在备份域中,用的时钟是LXTAL.deep sleep好像并没有影响到RTC这部分。
在下一份博客中详细看下,RTC能否唤醒deep sleep模式下的设备