STM32L151的RTC总结
扫描二维码
随时随地手机看文章
1.与RTC有关的IO口:PC13(TAMPER-RTC)不能设置成GPIO_Mode_AN状态,否则进不了RTC中断。(可以设置成GPIO_Mode_IN)。
2.需要在设置RTC时钟之前 RTC_WakeUpCmd(DISABLE),这一句官方例子上没有,如果没有这一句现象为只有当重新上电的时候RTC才会重置,而重新运行程序的时候RTC不会重置。
3.在设置RTC的定时唤醒中断前,一定要清除相应的中断,否则表现的现象为有时能进入RTC中断,有时不能进。
RTC_ClearITPendingBit(RTC_IT_WUT);
RTC_ITConfig(RTC_IT_WUT, ENABLE);
4.RTC的周期中断将CPU从停机模式唤醒时,一定要清除Wake-Up标志位,否则只能进一次RTC中断,后续进不了。
if(PWR_GetFlagStatus(PWR_FLAG_WU) != RESET)// 检查唤醒标志是否设置
{
PWR_ClearFlag(PWR_FLAG_WU);
}
未解决的问题:当RTC将CPU唤醒后,如果配置MSI为时钟源,当再次进入低功耗时,功耗维持在60-70ua,原因未知;当采用HSE为中断源时,RTC中断会在三四次后不能再进入,目前采用HSI作为RTC唤醒后的中断源。