在调试STM32的RTC时,使用内部LSI晶振作为RTC晶振来源有两个问题:
1、由于LSI晶振频率大约在40KHz附近,实际上会在30~60KHz之间波动,导致计时不准,基本上一小时会有1分钟左右的偏差。
2、由于LSI内部晶振,在断电的时候不在后备供电区域,而外接的电池连在VBAT上,只给后备供电区域供电,导致芯片断电后,电池只能维持后备RTC的计数,并没有给LSI晶振供电,导致RTC总是保持在断电之前的时间。虽然上电后可以继续运行,但是需要重新校准。
最好使用LSE,这样芯片的掉电后,通过电池可以保持时间继续走。
注意:VBAT给RTC供电,包括RTC的所有寄存器,比如上一版代码打开了RTC的秒中断,VBAT不断电的情况下重新烧代码,新代码不打开RTC的秒中断,但是依旧产生秒中断。