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;
- }
看了手册,说是可以自动计算每月的天数,闰年等。闰年这个接口怎么实现?这方面打算自己写几个接口。
|