瑞萨RH850 RTC计时进位异常

RH850 MCU的RTC(实时时钟)采用BCD(二进制编码的十进制)编码格式,支持闰年自动识别,并具有秒、分、时、日、周、月、年的进位功能。其中,秒和分为60进位,时为12或24进位,周为7进位,日根据月份不同为28、29、30、31进位,月为12进位,年则为00~99年。

近期,我们在使用瑞萨MCU RH850的RTC时遇到了一个计时进位异常问题。通过UART打印时间变量时,发现秒和分的进位并非预期的60进位,而是错误地表现为90进位。这一现象引起了我们的关注。

然而,使用仿真器直接监视RTC内部的SEC、MIN等寄存器时,却发现它们在达到0x59后正常进位,这表明RTC本身的计时功能并无问题。

仔细观察后,我们发现了一个关键规律:当秒数超过09后,显示值会直接跳跃到16,然后继续递增。这一现象表明,问题可能出在数据格式的转换上。由于RTC内部采用BCD编码格式,而我们在通过UART输出到串口调试助手时将其当作十进制数据处理,导致了显示上的偏差。

针对这一问题,我们对UART的输出处理格式进行了相应修改。经过调整后,串口调试助手上显示的时间终于恢复正常,验证了我们的分析是正确的。

综上所述,RH850 MCU的RTC内部寄存器采用独特的BCD编码格式,这要求我们在处理相关数据时必须特别注意格式转换。否则,很容易引发类似的误解和问题。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 12:28:04       53 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 12:28:04       56 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 12:28:04       46 阅读
  4. Python语言-面向对象

    2024-07-11 12:28:04       57 阅读

热门阅读

  1. 企业微信群发限制的背后逻辑,一文读懂!

    2024-07-11 12:28:04       20 阅读
  2. Stable Diffusion与AI艺术:探索人工智能的创造力

    2024-07-11 12:28:04       23 阅读
  3. vue3 ts 不使用 if switch 来决定使用什么函数

    2024-07-11 12:28:04       17 阅读
  4. 拖动未来:WebKit 完美融合拖放API的交互艺术

    2024-07-11 12:28:04       20 阅读
  5. helm安装解决无授权问题

    2024-07-11 12:28:04       18 阅读
  6. php获取,昨,今,后天.... 本周,月,年...日期时间戳

    2024-07-11 12:28:04       22 阅读
  7. 大话C语言:第28篇 内存分配与释放

    2024-07-11 12:28:04       18 阅读
  8. MySQL 中删除重复的数据并只保留一条

    2024-07-11 12:28:04       18 阅读
  9. spring boot 3.2.x 使用CDS加速启动

    2024-07-11 12:28:04       22 阅读
  10. 37.深度学习中的梯度下降法及其实现

    2024-07-11 12:28:04       20 阅读
  11. Spring Boot与Spring MVC的区别和联系

    2024-07-11 12:28:04       22 阅读
  12. 代码随想录-DAY⑥-哈希表——leetcode 383 | 454

    2024-07-11 12:28:04       21 阅读
  13. linux去掉行首的#字符

    2024-07-11 12:28:04       19 阅读
  14. 常见的负载均衡算法和实现方式

    2024-07-11 12:28:04       22 阅读
  15. Android焦点之Focused Window的更新(二)

    2024-07-11 12:28:04       18 阅读