RTC出现上电后计数值变化情况
最经的一个项目要使用F103的RTC功能,为了加快项目的进度,使用了网上现有的例程,通过简单的修改先使用着。
具体实施方法:硬件上,CR2032电池通过二极管和芯片的VBAT引脚连接,并使用104电容做退耦;软件上,使用了[软件参考]http://www.openedv.com/forum.php?mod=viewthread&tid=230238 文章中也介绍了RTC的结构原理和使用方法,重点要注意RTC的几个点:
开启RTC电源和时钟。
访问RTC寄存器的使能方法,如果不使能标志位,将无法对RTC寄存器的访问。
要注意一个细节,这个需要仔细阅读原版文件中的时钟同步的说明。
遇到的问题
最开始在做驱动时,直接使用了上面链接中的软件方法,基本上照抄过来,实际使用时性能都正常,通过测试。进而后来再也没有考虑过这个RTC功能的事情直接去做应用去了。但是直到程序末期在设备上实际使用时才将问题暴露出来:在对整个设备做重新上电重启时会出现偶然间的RTC计数器值变化大的情况5000到10000不等,也没有任何规律。 突然间在自己脑子中开始设想N多种原因,但是解决办法只能回去实际测试。
log.png
原因分析和实施
原因1. 现象是在整机上电时出现时间变化的情况,怀疑是不是由于电源电路出现的干扰导致32768晶振工作出现波动(增加)导致寄存器计数瞬间加快,出现的计数时间变化的情况。
根据这个原因,首先对电源电路电路做分析:由于使用的电源为D