打印

GD32F470 RTC读出来有 12月32号(跨年测试)

[复制链接]
1657|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
有点奇葩了,这个芯片!

使用特权

评论回复
沙发
caizhiwei|  楼主 | 2023-3-23 19:26 | 只看该作者
代码300ms读一次,不断的读,没有任何写操作。
void BSP_RTC_time_Get( hw_rtc *p )
{
    uint32_t time_subsecond = 0;        
    rtc_parameter_struct rtc_read;  
    rtc_current_time_get(&rtc_read);
    time_subsecond = rtc_subsecond_get();  
    time_subsecond = (1000 - (time_subsecond*1000+1000)/400);   
    p->tm_year = RTC_BCDToByte(rtc_read.year);  // form 2000
    p->tm_mon = rtc_read.month;
    p->tm_mday = RTC_BCDToByte(rtc_read.date);
    p->tm_hour = RTC_BCDToByte(rtc_read.hour);
    p->tm_min = RTC_BCDToByte(rtc_read.minute);
    p->tm_sec = RTC_BCDToByte(rtc_read.second);
    p->tm_subsec = time_subsecond;   
}

使用特权

评论回复
板凳
sagade| | 2023-3-23 20:50 | 只看该作者
设置时间的时候,年月日时分秒都必须是BCD码,手册明文写了的(不要看库文件的注释,容易被误导)。
如果设置月份的时候,用10进制的数,如12,设置到月,则在跨年的时候会有问题(当然也不算问题,因为压根没用对,12不是合法的BCD)
如果设置月份的时候,用12的BCD码(0001 0010)设置,则是没有问题的。

使用特权

评论回复
地板
sagade| | 2023-3-23 21:00 | 只看该作者
芯片是没有问题的。
就是官方的例程是比较误导人的,特别是例程的rtc_show_time函数,读出来是BCD码,不做转换就打印显示了。
去年搞这个的时候也是有点晕,后来完全按照手册来就没有问题的。

使用特权

评论回复
5
caizhiwei|  楼主 | 2023-3-24 08:32 | 只看该作者
sagade 发表于 2023-3-23 20:50
设置时间的时候,年月日时分秒都必须是BCD码,手册明文写了的(不要看库文件的注释,容易被误导)。
如果设 ...

您的建议很中肯,我再调试一下,感谢~

使用特权

评论回复
6
caizhiwei|  楼主 | 2023-3-24 09:59 | 只看该作者
本帖最后由 caizhiwei 于 2023-3-24 13:49 编辑

通过仿真,最后找到了问题所在。

使用特权

评论回复
7
caizhiwei|  楼主 | 2023-3-24 13:50 | 只看该作者
uint8_t RTC_ByteToBCD(uint8_t Value)//二进制转BCD
{
#if 0
    uint32_t bcdhigh = 0u;
        uint8_t Param = Value;
        while(Param >= 10u)
        {
                bcdhigh++;
                Param -= 10u;
        }
        return  ((uint8_t)(bcdhigh << 4u) | Param);
#else   
    uint8_t bit[2];
        uint8_t retValue;
        bit[0] = Value % 10;
        bit[1] = Value % 100 / 10;
        retValue = (bit[1] << 4) | bit[0];
        return (retValue);
#endif   
}

使用特权

评论回复
8
caizhiwei|  楼主 | 2023-3-24 13:50 | 只看该作者
仔细研究8421BCD码,重新写了这个接口函数,问题解决。

使用特权

评论回复
9
caizhiwei|  楼主 | 2023-3-24 13:51 | 只看该作者
[2023-12-31T23:59:59.730+08:00]
[2023-12-31T23:59:59.923+08:00]
[2024-01-01T00:00:00.478+08:00]
[2024-01-01T00:00:00.670+08:00]
[2024-01-01T00:00:00.863+08:00]
[2024-01-01T00:00:01.415+08:00]

使用特权

评论回复
10
地瓜patch| | 2023-3-24 14:44 | 只看该作者
给你的32日点赞

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

857

帖子

14

粉丝