暂时无法解决的关于STM32F103的RTC日期更新问题

近两天用STM32F103C6T6A制作一个电子钟,用STM32CubeMX生成工程后,直接用HAL库中的设定日期和时间的函数来初始化时间。

设定和读取当前时间用的函数是:

cpp 复制代码
HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); 
HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); 
HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format); 
HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format);

这4个函数用起来真的很方便!

但是在实际应用中,却发现了一个问题:就是初始化时间后,在不断电不复位的情况下,读取的日期和时间都是正确的。而当系统复位或主电源断电后,读取的时间是正确的,但读取的日期就变成了0年1月1日。VBAT电源是正常的。

有网友说,读取数据时必须先读时间再读日期,但经过测试,无论哪一种先读都是一样的结果。

说明一下,串口打印的第一个数据(例如84125),是直接读取RTC_CNT寄存器值的,这个数值一直在增加,无论主电源是否断电。这说明RTC_CNT寄存器一直在累计,所以可以排除RTC工作异常的情况。

这问题困扰了两天,至今百思不得其解,难不成是ST的HAL库有BUG?

请路过的高手指点迷津!谢谢!

2026.1.31

相关推荐
4caf113 小时前
作业2:6位数码管静态显示
嵌入式硬件·51单片机
不做无法实现的梦~13 小时前
STM32解析PPM协议
stm32·单片机·嵌入式硬件
czhaii14 小时前
基于Arm Cortex-M7内核GD32H7
单片机·嵌入式硬件
番茄灭世神14 小时前
MCU开发常见软件BUG总结(持续更新)
c语言·stm32·单片机·嵌入式·gd32
wanghanjiett14 小时前
双轮平衡车建模及控制 2 PID控制原理与调参
嵌入式硬件·控制算法
EVERSPIN15 小时前
SQPI PSRAM为单片机提供RAM扩展方案
单片机·嵌入式硬件·psram·sqpi psram
Ar-Sr-Na15 小时前
STM32现代化AI开发指南-VSCode环境配置(macOS)
c语言·人工智能·vscode·stm32·嵌入式硬件·硬件工程
进击的小头15 小时前
第6篇:嵌入式芯片算力核心来源:多级流水线架构与指令并行机制详解
单片机·嵌入式硬件·架构
jacklood15 小时前
煤矿用甲烷报警仪的性能试验具体方法
单片机·嵌入式硬件·煤矿电子
海水冷却15 小时前
2026年实时音视频服务计费模式指南
实时音视频