STM32自学笔记-11-RTC3-掉电后日期清零的解决

接着之前的问题,单片机断电后的时间可以接上,但日期就会被清零。这样看起来RTC的HAL库问题比较多一点,直接用起来还真挺烦的。
我认真地看了下stm32f1xx_hal_rtc.c里面的HAL_RTC_GetTime()HAL_RTC_GetDate()两个函数,弄明白了问题的大概原因。

HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
{
  ...
  counter_time = RTC_ReadTimeCounter(hrtc);  //counter_time是RTC计数器的值
  hours = counter_time / 3600U;   //小时
  sTime->Minutes  = (uint8_t)((counter_time % 3600U) / 60U);  
  sTime->Seconds  = (uint8_t)((counter_time % 3600U) % 60U);  
  ...

所以和Time相关的是RTC计数器的值,是在断电后由电池供电的继续工作的,所以Time可以继续计时。
再看看HAL_RTC_GetDate()

HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
{
   ...
   sDate->WeekDay  = hrtc->DateToUpdate.WeekDay;  
   sDate->Year     = hrtc->DateToUpdate.Year;
   sDate->Month    = hrtc->DateToUpdate.Month;
   sDate->Date     = hrtc->DateToUpdat
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值