che****.cn
1.我的操作:
在使用内部RTC功能时,依次调用接口app_rtc_init(), app_rtc_init_time(),来初始化RTC和设置了正确的日期和时间,然后不断电重启,调用app_rtc_init()和app_rtc_get_time()来获取当前的时间,发现时间会清零为2010年xxx,而不是前面已经设置的时间。查看源码后发现app_rtc_init()会重置时间。但是不掉用app_rtc_init()而直接调用app_rtc_get_time()会报错。
2.我要实现的功能:
如设置了RTC的时间为2024年9月3日,15:07:23,周三,经过了一个小时后,在不断电的情况下程序重启(RTC模块是始终供电的,这个在数据手册中可以查看到说明,理论上计时将会一直进行),能通过调用一个接口函数来获取到时间2024年9月3日,16:07:23,周三。其中中间间隔的这个时间不一定是1小时,有可能为几日甚至几个月。
3.请问sdk中有没有相应的方法实现我想要的功能?如果能实现,则我应该如果操作,可以参考那些文件?如能得到解答,我将非常感谢!
Ping
1. RTC模块在系统复位(看门狗、Chip en等复位)的时候,也会被复位复位,因此时间会回复成默认值;
2. RTC模块不支持备用电源供电;
因此目前的常规解决方案:在复位之前把时间写入Flash,重启之后加从Flash读取时间,并加上重启过程的固定时间偏移,重新初始化RTC。
打开微信,使用“扫一扫”即可关注