STM8L的“RTC periodic wakeup unit”可以通过寄存器RTC_CR1的WUCKSEL[2:0] bits来配置不同的唤醒周期。具体的有以下的三种模式:
1.1,WUCKSEL[2:0] = 0xxb for short wakeup periods
1.2 WUCKSEL[2:0] = 10xb for medium wakeup periods
1.3 WUCKSEL[2:0] = 11xb for long wakeup periods
其中short wakeup periods时钟的分频是如下流程:
则的周期唤醒在不同时钟源频率下的clk为:
最小的唤醒周期为(0x0001+1)*0.125us = 0.25us
最大的唤醒周期为(0xfffff+1)*31.25ms = 2048s
medium wakeup periods时钟源配置流程:
则的周期唤醒在不同时钟源频率下的clk为:
最小的唤醒周期为(0x0000+1)*0.125us = 0.125us
最大的唤醒周期为(0xfffff+1)*8192s = 536870912s
long wakeup periods的时钟源计算和medium wakeup periods是一样区别就是WUCKSEL[2:0] = 11xb和重载的计数是从0x10000-0x1FFFF;
所有的时钟源的计算都遵循以下公式:
单位HZ
目前公司项目是用LSE配置的1HZ使用halt的进入低功耗模式,休眠期间功耗为1.5ua左右。
另外在唤醒以后使用TIMEER1作为整个软件系统的嘀嗒时基,注意定时器休眠之前的操作,中断关闭,DeInitt定时器,关闭定时时钟,清定时中断标志等,不然会出现莫名重启。
目前软件运行休眠和唤醒都正常。