RTC

RTC时间错误

发布于 2019-04-12 17:23:25
各位老哥,我这里NTP同步时间后,RTC的时间的年份会不对,然后自己手动设置时间,发现年份也会和设置的不一致,多出了6年,代码本身没做修改,断点打了半天也没找到哪里的问题,有谁遇到这个问题的吗?


TIM图片20190412172302.png

查看更多

关注者
0
被浏览
2.1k
8 个回答
lightwaves
lightwaves 2019-04-12
yangjie 发表于 2019-4-12 17:35
老哥看下这个文档,date也可以设置时间的,看看行不行呢?https://www.rt-thread.org/document/site/progra ...


date也不正确,https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=7037&extra=page%3D1%26filter%3Dtypeid%26typeid%3D59,我用了这个帖子里的方法,解决了,看到这个板块下好多都是这个问题,会不会是什么BUG?
aozima
aozima 2019-04-12
哪个BSP? 使用哪个RTC芯片? 或是内置RTC?

设置时间的时候,把转换后得到的时间戳也打印出来核对吧。
lightwaves
lightwaves 2019-04-12
aozima 发表于 2019-4-12 18:20
哪个BSP? 使用哪个RTC芯片? 或是内置RTC?

设置时间的时候,把转换后得到的时间戳也打印出来核对吧。 ...


用的是STM32F407HAL BSP ,内部RTC,打断点的时候一路过去都没问题,但在最后time()函数获取时间后到ctime()出来就错了不知道是什么情况
charlown.cai
charlown.cai 2019-04-12
https://fastadmin.rt-thread.org/ask/question/7037.html
我之前用stm32051遇到的问题,看看有没有帮助。
aozima
aozima 2019-04-13
    本帖最后由 aozima 于 2019-4-13 11:24 编辑


就错了

建议更详细!输入参数是什么? 预期值是多少? 实际返回值是多少?
还有就是,设置后,这个错误的时间是否能正常走秒。
lightwaves
lightwaves 2019-04-15
aozima 发表于 2019-4-13 09:15
建议更详细!输入参数是什么? 预期值是多少? 实际返回值是多少?
还有就是,设置后,这个错误的时间是否 ...


输入参数就是我设置的时间,从年到秒,分别用date 命令设置和NTP同步正确的时间,当设置或同步时间后,再用date 命令查看时间,年份就会不对,往往比设置的或者同步的年份多出了4,5年,,时间只是年份错误,其他一切正常,按照我单步调试的情况来看,异常的地方在如下图所示代码的地方,之前的年份都是正确的年份,从rtc.c文件里的ctime出来以后就不正确了
FINSH_FUNCTION_EXPORT(set_date, set date. e.g: set_date(2010,2,28))
FINSH_FUNCTION_EXPORT(set_time, set time. e.g: set_time(23,59,59))

#if defined(RT_USING_FINSH) && defined(FINSH_USING_MSH)
static void date(uint8_t argc, char **argv)
{
if (argc == 1)
{
time_t now;
/* output current time */
now = time(RT_NULL);
rt_kprintf("%s", ctime(&now));
}
else if (argc >= 7)
charlown.cai
charlown.cai 2019-04-15
    本帖最后由 charlown.cai 于 2019-4-15 14:47 编辑


下了stm32全系列最新固件(HAL库),除了MP系列没发现rtc源码文件, 在F0~7,H7,G0, L1, L4, WB系列中,关于HAL_RTC_SetDate的实现,只有F1系列不需要手动设置weekday
F1系列:

`


其他系列(其中L4系列中的“13U”换成了“RTC_DR_WDU_Pos”):

`

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友