整理:MilerShao
有人使用STM32F072芯片开发电子产品,产品需要用到STOP休眠模式,希望用RTC的周期性自动唤醒功能来唤醒芯片。他发现芯片进入STOP后根本无法通过RTC定时唤醒MCU。查看ST的官方相关估计库,似乎并没有关于RTC 定时唤醒的参考项目。
我大致找了下,ST官方好像是没有现存的关于32F0芯片 RTC定时唤醒的例程。这里一起交流下RTC 定时唤醒话题。
其实,实现这个RTC 定时唤醒还是比较简单的。这里有个可编程的可自动重装的向下计数器,按照相应的时钟频率赋予适当的值,每当向下计数到0时便产生一个唤醒标志,如果此时使能了相应的定时唤醒中断,它就可以把MCU从低功耗模式唤醒。需做如下四项基本的准备工作。
1、确定RTC时钟,即RTCCLK.可以是LSE、LSI、HSE/32其中一个。下面的例程中选用LSI.
2、为自动唤醒定时计数器选择合适的时钟源。可以是RTCCLK的2,4,8,16分频后的某一个,或者使用RTCCLK经过预分频后的秒时钟CK_SPRE。下面例程中选用RTCCLK/16作为唤醒计时器【RTC_WUTR】的时钟源。
3、结合上面选定的唤醒定时器的时钟和需要STOP休眠的时间,计算出将赋给唤醒定时器【RTC_WUTR】的重载值。比方这里以LSI/16作为定时器的计数时钟,假设定时1S,LSI的频率按40K算的话,那40k/16=2500,16进制即0x9c4.
那如果定时1S的话,赋值应该就是0X9C4.【LSI有波动,定时可能误差】
4、做好RTC周期性定时唤醒的中断配置,即NVIC配置。RTC唤醒事件是连接到EXTI 20