[综合信息] 发现《hc32l13x_ddl_Rev1.9.2 Lite》驱动库RTC历程有一个BUG

[复制链接]
3771|37
 楼主| caizhiwei 发表于 2021-3-11 17:36 | 显示全部楼层 |阅读模式


   RTC的历程虽然简单,但是也发现了一个小bug. 打算做一个万年历的,发现注释和写进去的数值不对。

905936049e3f3dfca2.png

因为时间读出来是bcd的,读出来需要转换,写了一个接口分享给大家:
  1. /*把bcd码转换成十进制 exp: 0x56 -> 56*/
  2. static uint8_t bcd_to_dec(uint8_t bcd_num)                       
  3. {
  4.         return ((((bcd_num & 0xf0)>>4)*10) + (bcd_num&0x0f));
  5. }


  6. /**
  7. *************************************************************************
  8. ** \brief : 年月日周为10进制,不需要转换
  9. **
  10. **
  11. ** \param 1 : stcReadTime, 保存时间结构体
  12. **
  13. ** \retval :  en_result_t                              
  14. **************************************************************************/
  15. en_result_t Rtc_ReadDateTime_dec(stc_rtc_time_t *pstcTimeDate)
  16. {               
  17.         Rtc_ReadDateTime(pstcTimeDate);       
  18.         pstcTimeDate->u8Hour = bcd_to_dec(pstcTimeDate->u8Hour);
  19.         pstcTimeDate->u8Minute = bcd_to_dec(pstcTimeDate->u8Minute);
  20.         pstcTimeDate->u8Second = bcd_to_dec(pstcTimeDate->u8Second);
  21.         return Ok;       
  22. }


看了手册,说是可以自动计算每月的天数,闰年等。闰年这个接口怎么实现?这方面打算自己写几个接口。

评论

1.手册有瑕疵 2.楼主很想搞大新闻 3.作为工程师,做点小实验即可知手册瑕疵 4.作为工程师,直接用库来工作不会出任何问题 5.作为一个想搞事的工程师,这样瑕疵用起来太爽了  发表于 2021-3-12 16:04
是楼主没看懂手册和例子,用户手册说的很明确了,RTC用的是BCD码存储,比如0x19代表的就是19年,下一年就是0x20,代表20年,建议楼主再读读手册和例子。  发表于 2021-3-12 10:02
 楼主| caizhiwei 发表于 2021-3-11 17:43 | 显示全部楼层
更正后运行结果:
  1. [17:42:02.844]收←◆Date = 2021-5-6
  2. Time = 23:59:59

  3. [17:42:03.188]收←◆Date = 2021-5-6
  4. Time = 23:59:59

  5. [17:42:03.533]收←◆Date = 2021-5-6
  6. Time = 23:59:59

  7. [17:42:03.878]收←◆Date = 2021-5-7
  8. Time = 0:0:0

  9. [17:42:04.216]收←◆Date = 2021-5-7
 楼主| caizhiwei 发表于 2021-3-11 17:59 | 显示全部楼层
突然发现楼主的截图中还有另外一个bug,大家要不要一起来找茬?哈哈
luhailiang 发表于 2021-3-11 18:04 | 显示全部楼层
我记得这种注释与代码不一致的地方挺多的,特别是时钟的设置那里
luhailiang 发表于 2021-3-11 18:15 | 显示全部楼层
caizhiwei 发表于 2021-3-11 17:59
突然发现楼主的截图中还有另外一个bug,大家要不要一起来找茬?哈哈

RtcInitStruct.rtcAmpm = RtcPm;                       //12小时制
明明是24小时。。。
真爱吴迪迪 发表于 2021-3-11 18:36 | 显示全部楼层
为什么你这么厉害,可以发现这个bug,我却没有发现呢?
 楼主| caizhiwei 发表于 2021-3-11 19:32 | 显示全部楼层
luhailiang 发表于 2021-3-11 18:15
RtcInitStruct.rtcAmpm = RtcPm;                       //12小时制
明明是24小时。。。

亮哥,果然是牛啊
xyz549040622 发表于 2021-3-11 22:33 来自手机 | 显示全部楼层
楼主看的很详细呀,支持一下。
 楼主| caizhiwei 发表于 2021-3-12 08:41 | 显示全部楼层
xyz549040622 发表于 2021-3-11 22:33
楼主看的很详细呀,支持一下。

官方的库,烂得一塌糊涂,和ST相比差了一大截
martinhu 发表于 2021-3-12 10:11 | 显示全部楼层
本帖最后由 martinhu 于 2021-3-12 10:24 编辑

是楼主没看懂手册和例子,
用户手册说的很明确了,RTC用的是BCD码存储,比如0x19代表的就是19年,下一年就是0x20,代表20年,

建议楼主再读读手册和例子!!!

读取的时候也要按照BCD的方式去理解。不要翻译成十进制……
83794604ad01daef8e.png 73953604acd687f1f7.png


 楼主| caizhiwei 发表于 2021-3-12 10:53 | 显示全部楼层
martinhu 发表于 2021-3-12 10:11
是楼主没看懂手册和例子,
用户手册说的很明确了,RTC用的是BCD码存储,比如0x19代表的就是19 ...

真是对你无语了,你是销售没有验证就没有发言权,时间至几个字写的清清楚楚,你没看到吗?
手册我反反复复看了很多遍的

评论

首先,我不是销售,请先搞清楚 其次,手册肯定没我看的多  发表于 2021-3-12 11:01
 楼主| caizhiwei 发表于 2021-3-12 10:54 | 显示全部楼层
martinhu 发表于 2021-3-12 10:11
是楼主没看懂手册和例子,
用户手册说的很明确了,RTC用的是BCD码存储,比如0x19代表的就是19 ...

建议你先把进制搞清楚,时分秒是bcd,年月日不是bcd,请看手册哦

评论

@martinhu :胡扯,你自己看手册去  发表于 2021-3-12 11:03
不管是时分秒,还是年月日,都是BCD的  发表于 2021-3-12 11:01
martinhu 发表于 2021-3-12 11:09 | 显示全部楼层
caizhiwei 发表于 2021-3-12 10:54
建议你先把进制搞清楚,时分秒是bcd,年月日不是bcd,请看手册哦

63250604adb42d005f.png
请楼主认真读读这句,还说自己看过很多遍手册
请问谁在胡扯?????
 楼主| caizhiwei 发表于 2021-3-12 11:19 | 显示全部楼层
2346604add158bdc4.png
十进制:
94685604add51335c6.png
请网友看我框出来的有啥不同吗?搞技术的都懂,只有楼上的代理销售不懂,可悲啊,还私下多次让我删帖!!
私下让我删帖的都是小人。
 楼主| caizhiwei 发表于 2021-3-12 11:22 | 显示全部楼层
华大能否做大做强,需要正视自己的错误;态度很重要;
话说,本帖子中,还有另一个bug,(12小时制);虽然是个小bug,但是你们华大承认不承认?是你们的态度问题。
已结贴

评论

这个确实是一个注释问题。 但是上面讨论的,不能说自己看不懂的,或者有疑问的,都是bug,搞技术的一般都不会这样。 除非是想博眼球的。  发表于 2021-3-12 13:06
martinhu 发表于 2021-3-12 13:04 | 显示全部楼层
caizhiwei 发表于 2021-3-12 11:19
十进制:

请网友看我框出来的有啥不同吗?搞技术的都懂,只有楼上的代理销售不懂,可悲啊,还私下多次让 ...

这里的0:99,还是个位最多是9,十位最多是9,但是个位占bit0~3,十位占bit4~7,还是BCD码。
不信你用十进制往整个寄存器写个10看看,读出来是10年还是00年??
顺便说一下,我真不是销售,也不是代理,这论坛好多人都认识我。
 楼主| caizhiwei 发表于 2021-3-12 13:18 | 显示全部楼层
martinhu 发表于 2021-3-12 13:04
这里的0:99,还是个位最多是9,十位最多是9,但是个位占bit0~3,十位占bit4~7,还是BCD码。
不信你用十 ...

我也懒得和你争了,浪费时间,你也别私信我删帖了。
对与错,真与假,它总在那里。

评论

@martinhu :2019-12-31 23点59分,然后运行等待一分钟,看看是你理解读出来对的,还是我的理解对的!!!!!!!!!!!  发表于 2021-3-12 15:19
你设置一个2019年12月31日59分,然后等一分钟看看结果,就知道谁说的对了,实践出真理!!! 只是不想你在这里误导其他华大的用户!!!!!!!!!  发表于 2021-3-12 15:17
我什么时候私信你删帖了?????  发表于 2021-3-12 15:15
 楼主| caizhiwei 发表于 2021-3-12 14:49 | 显示全部楼层
更新了,哈哈:
用了time.h中的结构体,很好用
22606604b0f07e543b.png
 楼主| caizhiwei 发表于 2021-3-12 14:51 | 显示全部楼层
66的,接下来要去研究RTC补偿了
18923604b0f58685da.png
YF22 发表于 2021-3-12 15:07 | 显示全部楼层
楼主可以先提升一下自己的技术能力,看不懂得可以积极提问,而不是觉得自己看不懂的就是错误的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

856

帖子

16

粉丝
快速回复 在线客服 返回列表 返回顶部