summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortyustli <[email protected]>2020-05-15 12:53:36 +0800
committertyustli <[email protected]>2020-05-15 12:53:36 +0800
commit55edb9642a774fef8acf4f918d85e70340acb1db (patch)
treeff5a6cee1c5b72d1a7404cdb655f79debe040ed7
parenta7c293fac078946ba544204a3fe67d930bdc82b7 (diff)
【修改】添加注释及模块化程序
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drv_rtc.c26
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