diff options
| author | Meco Man <[email protected]> | 2022-04-16 22:49:10 -0400 |
|---|---|---|
| committer | guo <[email protected]> | 2022-04-19 11:48:59 +0800 |
| commit | 991b6e78b3bd51b810f6e7a74e7b3665ed90dcab (patch) | |
| tree | 8e26c197804c1e1c959cdbf34c5bddab4b293b02 /bsp | |
| parent | 5e9f525c41b6ce70662c1d0770f125de0387a5ef (diff) | |
[bug] 修正rtc对时间参数范围的处理 | fix a bug of rtc
Diffstat (limited to 'bsp')
| -rw-r--r-- | bsp/stm32/libraries/HAL_Drivers/drv_rtc.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c b/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c index 380cb05c61..b69ff05b78 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c @@ -38,7 +38,7 @@ RT_WEAK void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegiste return; } -static void get_rtc_timeval(struct timeval *tv) +static rt_err_t stm32_rtc_get_timeval(struct timeval *tv) { RTC_TimeTypeDef RTC_TimeStruct = {0}; RTC_DateTypeDef RTC_DateStruct = {0}; @@ -59,6 +59,8 @@ static void get_rtc_timeval(struct timeval *tv) #if defined(SOC_SERIES_STM32H7) tv->tv_usec = (255.0 - RTC_TimeStruct.SubSeconds * 1.0) / 256.0 * 1000.0 * 1000.0; #endif + + return RT_EOK; } static rt_err_t set_rtc_time_stamp(time_t time_stamp) @@ -244,36 +246,30 @@ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI1; return RT_EOK; } -static rt_err_t stm32_rtc_get_secs(void *args) +static rt_err_t stm32_rtc_get_secs(time_t *sec) { struct timeval tv; - get_rtc_timeval(&tv); - *(rt_uint32_t *) args = tv.tv_sec; - LOG_D("RTC: get rtc_time %x", *(rt_uint32_t *)args); + + stm32_rtc_get_timeval(&tv); + *(time_t *) sec = tv.tv_sec; + LOG_D("RTC: get rtc_time %d", *sec); return RT_EOK; } -static rt_err_t stm32_rtc_set_secs(void *args) +static rt_err_t stm32_rtc_set_secs(time_t *sec) { rt_err_t result = RT_EOK; - if (set_rtc_time_stamp(*(rt_uint32_t *)args)) + if (set_rtc_time_stamp(*sec)) { result = -RT_ERROR; } - LOG_D("RTC: set rtc_time %x", *(rt_uint32_t *)args); + LOG_D("RTC: set rtc_time %d", *sec); return result; } -static rt_err_t stm32_rtc_get_timeval(void *args) -{ - get_rtc_timeval((struct timeval *) args); - - return RT_EOK; -} - static const struct rt_rtc_ops stm32_rtc_ops = { stm32_rtc_init, |
