STM8L RTC计时的问题
我在使用STM8L做内部RTC做时钟的时候,发现了一个问题。时钟计时计到了超过24时。昨天下午我设置了一个初始时间,今天早上8:19的时候读取STM8内部RTC时间显示的是 2018.8.2932:19:05时间计时到了32时,RTC不应该是满24,自动切换的吗估计是BCD码的问题,切换一下应该就可以了。 估计是压缩BCD码的处理问题,这个注意处理一下 楼上两位,请说具体一点。意思是格式选择BCD就可以避免还是需要注意其他什么。该怎么处理 BCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。按照这个这个规则32对应的是20点。以下是标准库的转换源码。
02741 /**
02742 * @briefConvert from 2 digit BCD to Binary.
02743 * @paramValue: BCD value to be converted.
02744 * @retval Converted word
02745 */
02746 static uint8_t RTC_Bcd2ToByte(uint8_t Value)
02747 {
02748 uint8_t tmp = 0;
02749 tmp = ((uint8_t)(Value & (uint8_t)0xF0) >> (uint8_t)0x4) * 10;
02750 return (tmp + (Value & (uint8_t)0x0F));
02751 }
学习了 bcd码也叫8421码就是将十进制的数以8421的形式展开成二进制,大家知道十进制是0~9十个数组成,这十个数每个数都有自己的8421码: 0=0000 1=0001 2=0010 3=0011 4=0100 5=0101 6=0110 7=0111 8=1000 9=1001
所以24的bcd码为:0010 0100 谢谢大家 我查了代码我是选了BIN格式的RTC 出的这个问题 而且当时的32时是 早上8点 wanyisq 发表于 2018-8-31 09:04
谢谢大家 我查了代码我是选了BIN格式的RTC 出的这个问题 而且当时的32时是 早上8点 ...
您好!请问您是怎么设置BIN格式和BCD格式的?datasheet上好像写的都是BCD格式。 wanyisq 发表于 2018-8-31 09:04
谢谢大家 我查了代码我是选了BIN格式的RTC 出的这个问题 而且当时的32时是 早上8点 ...
我碰到的问题和你的是一样,也是早上8点变32点,不知道如何设置,请赐教,谢谢!
页:
[1]