发现《hc32l13x_ddl_Rev1.9.2 Lite》驱动库RTC历程有一个BUG
RTC的历程虽然简单,但是也发现了一个小bug. 打算做一个万年历的,发现注释和写进去的数值不对。
因为时间读出来是bcd的,读出来需要转换,写了一个接口分享给大家:
/*把bcd码转换成十进制 exp: 0x56 -> 56*/
static uint8_t bcd_to_dec(uint8_t bcd_num)
{
return ((((bcd_num & 0xf0)>>4)*10) + (bcd_num&0x0f));
}
/**
*************************************************************************
** \brief : 年月日周为10进制,不需要转换
**
**
** \param 1 : stcReadTime, 保存时间结构体
**
** \retval :en_result_t
**************************************************************************/
en_result_t Rtc_ReadDateTime_dec(stc_rtc_time_t *pstcTimeDate)
{
Rtc_ReadDateTime(pstcTimeDate);
pstcTimeDate->u8Hour = bcd_to_dec(pstcTimeDate->u8Hour);
pstcTimeDate->u8Minute = bcd_to_dec(pstcTimeDate->u8Minute);
pstcTimeDate->u8Second = bcd_to_dec(pstcTimeDate->u8Second);
return Ok;
}
看了手册,说是可以自动计算每月的天数,闰年等。闰年这个接口怎么实现?这方面打算自己写几个接口。
更正后运行结果:
收←◆Date = 2021-5-6
Time = 23:59:59
收←◆Date = 2021-5-6
Time = 23:59:59
收←◆Date = 2021-5-6
Time = 23:59:59
收←◆Date = 2021-5-7
Time = 0:0:0
收←◆Date = 2021-5-7 突然发现楼主的截图中还有另外一个bug,大家要不要一起来找茬?哈哈 我记得这种注释与代码不一致的地方挺多的,特别是时钟的设置那里 caizhiwei 发表于 2021-3-11 17:59
突然发现楼主的截图中还有另外一个bug,大家要不要一起来找茬?哈哈
RtcInitStruct.rtcAmpm = RtcPm; //12小时制
明明是24小时。。。 为什么你这么厉害,可以发现这个bug,我却没有发现呢? luhailiang 发表于 2021-3-11 18:15
RtcInitStruct.rtcAmpm = RtcPm; //12小时制
明明是24小时。。。
亮哥,果然是牛啊 楼主看的很详细呀,支持一下。 xyz549040622 发表于 2021-3-11 22:33
楼主看的很详细呀,支持一下。
官方的库,烂得一塌糊涂,和ST相比差了一大截 本帖最后由 martinhu 于 2021-3-12 10:24 编辑
是楼主没看懂手册和例子,
用户手册说的很明确了,RTC用的是BCD码存储,比如0x19代表的就是19年,下一年就是0x20,代表20年,
建议楼主再读读手册和例子!!!
读取的时候也要按照BCD的方式去理解。不要翻译成十进制……
martinhu 发表于 2021-3-12 10:11
是楼主没看懂手册和例子,
用户手册说的很明确了,RTC用的是BCD码存储,比如0x19代表的就是19 ...
真是对你无语了,你是销售没有验证就没有发言权,时间至几个字写的清清楚楚,你没看到吗?
手册我反反复复看了很多遍的 martinhu 发表于 2021-3-12 10:11
是楼主没看懂手册和例子,
用户手册说的很明确了,RTC用的是BCD码存储,比如0x19代表的就是19 ...
建议你先把进制搞清楚,时分秒是bcd,年月日不是bcd,请看手册哦 caizhiwei 发表于 2021-3-12 10:54
建议你先把进制搞清楚,时分秒是bcd,年月日不是bcd,请看手册哦
请楼主认真读读这句,还说自己看过很多遍手册
请问谁在胡扯?????
十进制:
请网友看我框出来的有啥不同吗?搞技术的都懂,只有楼上的代理销售不懂,可悲啊,还私下多次让我删帖!!
私下让我删帖的都是小人。
华大能否做大做强,需要正视自己的错误;态度很重要;
话说,本帖子中,还有另一个bug,(12小时制);虽然是个小bug,但是你们华大承认不承认?是你们的态度问题。
已结贴 caizhiwei 发表于 2021-3-12 11:19
十进制:
请网友看我框出来的有啥不同吗?搞技术的都懂,只有楼上的代理销售不懂,可悲啊,还私下多次让 ...
这里的0:99,还是个位最多是9,十位最多是9,但是个位占bit0~3,十位占bit4~7,还是BCD码。
不信你用十进制往整个寄存器写个10看看,读出来是10年还是00年??
顺便说一下,我真不是销售,也不是代理,这论坛好多人都认识我。 martinhu 发表于 2021-3-12 13:04
这里的0:99,还是个位最多是9,十位最多是9,但是个位占bit0~3,十位占bit4~7,还是BCD码。
不信你用十 ...
我也懒得和你争了,浪费时间,你也别私信我删帖了。
对与错,真与假,它总在那里。
更新了,哈哈:
用了time.h中的结构体,很好用
66的,接下来要去研究RTC补偿了
楼主可以先提升一下自己的技术能力,看不懂得可以积极提问,而不是觉得自己看不懂的就是错误的
页:
[1]
2