STM32 RTC日期进位不准确,1月31日变成1月16日

2020-01-01 17:36发布

本帖最后由 zhoujun19860612 于 2017-1-18 22:17 编辑

用STM32L052的RTC,时间走的都正常,平时日期显示也没问题,就是要加月份时就不太对,
从1月31日居然编程了1月16日,如下是串口将日期以16进制发送出来的,
年 月 日 时 分 秒
11 01 1F 17 3B 3B 0D 0A
11 01 10 00 00 00 0D 0A

还有设置1月32日,居然也没问题,然后加1天后变成了1月33日,奇怪了。
年 月 日 时 分 秒
11 01 20 17 3B 3B 0D 0A
11 01 21 00 00 00 0D 0A

不知谁在用STM32的RTC,指导下,谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
cqsgcqsg
1楼-- · 2020-01-01 20:29
 精彩回答 2  元偷偷看……
niechao15
2楼-- · 2020-01-02 01:03
我记得有一个毛病是读日期和读时间语句的顺序问题,忘记先后顺序了,你可以更改下顺序试试。
zhoujun19860612
3楼-- · 2020-01-02 02:06
niechao15 发表于 2017-1-18 09:59
我记得有一个毛病是读日期和读时间语句的顺序问题,忘记先后顺序了,你可以更改下顺序试试。 ...

先读时间再读日期,这个知道,反过来的话日期就更不正常了
zhoujun19860612
4楼-- · 2020-01-02 04:57
cqsgcqsg 发表于 2017-1-18 08:48
设置的时候是什么进制?

读写日期用的是RTC_Format_BCD进制,之前用RTC_Format_BIN进制的话就更不对了。
时间用的RTC_Format_BIN进制,目前都挺正常的。


RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);                //得先读时间,再读日期
RTC_GetDate(RTC_Format_BCD, &RTC_DateStructure);
zhoujun19860612
5楼-- · 2020-01-02 06:08
cqsgcqsg 发表于 2017-1-18 08:48
设置的时候是什么进制?

今天把设置和读取日期的进制从RTC_Format_BCD改成了RTC_Format_BIN,就正常了。测试了下,17年每个月进位都正常,年进位也正常

RTC_Format_BCD和RTC_Format_BIN这两种格式为什么有区别,为什么RTC_Format_BCD会出现问题知道吗?谢谢
qiuchen
6楼-- · 2020-01-02 06:36
 精彩回答 2  元偷偷看……

一周热门 更多>