diff options
| author | tyustli <[email protected]> | 2020-05-15 12:53:36 +0800 |
|---|---|---|
| committer | tyustli <[email protected]> | 2020-05-15 12:53:36 +0800 |
| commit | 55edb9642a774fef8acf4f918d85e70340acb1db (patch) | |
| tree | ff5a6cee1c5b72d1a7404cdb655f79debe040ed7 | |
| parent | a7c293fac078946ba544204a3fe67d930bdc82b7 (diff) | |
【修改】添加注释及模块化程序
| -rw-r--r-- | bsp/stm32/libraries/HAL_Drivers/drv_rtc.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c b/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c index 380cce7624..ba97bf681e 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c +++ b/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 |
