Browse Source

【修改】添加注释及模块化程序

tyustli 5 years ago
parent
commit
55edb9642a
1 changed files with 14 additions and 12 deletions
  1. 14 12
      bsp/stm32/libraries/HAL_Drivers/drv_rtc.c

+ 14 - 12
bsp/stm32/libraries/HAL_Drivers/drv_rtc.c

@@ -87,7 +87,9 @@ static rt_err_t set_rtc_time_stamp(time_t time_stamp)
 
     LOG_D("set rtc time.");
     HAL_RTCEx_BKUPWrite(&RTC_Handler, RTC_BKP_DR1, BKUP_REG_DATA);
+
 #ifdef SOC_SERIES_STM32F1
+    /* F1 series does't save year/month/date datas. so keep those datas to bkp reg */
     HAL_RTCEx_BKUPWrite(&RTC_Handler, RTC_BKP_DR2, RTC_DateStruct.Year);
     HAL_RTCEx_BKUPWrite(&RTC_Handler, RTC_BKP_DR3, RTC_DateStruct.Month);
     HAL_RTCEx_BKUPWrite(&RTC_Handler, RTC_BKP_DR4, RTC_DateStruct.Date);
@@ -120,13 +122,22 @@ static void rt_rtc_init(void)
 
 #ifdef SOC_SERIES_STM32F1
 /* update RTC_BKP_DRx*/
-static void rt_rtc_bkp_update(void)
+static void rt_rtc_f1_bkp_update(void)
 {
     RTC_DateTypeDef RTC_DateStruct = {0};
 
     HAL_PWR_EnableBkUpAccess();
     __HAL_RCC_BKP_CLK_ENABLE();
 
+    RTC_DateStruct.Year    = HAL_RTCEx_BKUPRead(&RTC_Handler, RTC_BKP_DR2);
+    RTC_DateStruct.Month   = HAL_RTCEx_BKUPRead(&RTC_Handler, RTC_BKP_DR3);
+    RTC_DateStruct.Date    = HAL_RTCEx_BKUPRead(&RTC_Handler, RTC_BKP_DR4);
+    RTC_DateStruct.WeekDay = HAL_RTCEx_BKUPRead(&RTC_Handler, RTC_BKP_DR5);
+    if (HAL_RTC_SetDate(&RTC_Handler, &RTC_DateStruct, RTC_FORMAT_BIN) != HAL_OK)
+    {
+        Error_Handler();
+    }
+
     HAL_RTC_GetDate(&RTC_Handler, &RTC_DateStruct, RTC_FORMAT_BIN);
     if (HAL_RTCEx_BKUPRead(&RTC_Handler, RTC_BKP_DR4) != RTC_DateStruct.Date)
     {
@@ -201,17 +212,8 @@ static rt_err_t rt_rtc_config(struct rt_device *dev)
 #ifdef SOC_SERIES_STM32F1
     else
     {
-        RTC_DateTypeDef RTC_DateStruct = {0};
-
-        RTC_DateStruct.Year    = HAL_RTCEx_BKUPRead(&RTC_Handler, RTC_BKP_DR2);
-        RTC_DateStruct.Month   = HAL_RTCEx_BKUPRead(&RTC_Handler, RTC_BKP_DR3);
-        RTC_DateStruct.Date    = HAL_RTCEx_BKUPRead(&RTC_Handler, RTC_BKP_DR4);
-        RTC_DateStruct.WeekDay = HAL_RTCEx_BKUPRead(&RTC_Handler, RTC_BKP_DR5);
-        if (HAL_RTC_SetDate(&RTC_Handler, &RTC_DateStruct, RTC_FORMAT_BIN) != HAL_OK)
-        {
-            Error_Handler();
-        }
-        rt_rtc_bkp_update();
+        /* F1 series need update by bkp reg datas */
+        rt_rtc_f1_bkp_update();
     }
 #endif