From fae9518185729072c1e399318d3b37d1ce23ad2a Mon Sep 17 00:00:00 2001 From: tangweikang Date: Tue, 25 Jun 2019 20:26:35 +0800 Subject: [PATCH] =?UTF-8?q?[bsp][stm32]=20drv=5Fwdt.c=20|=20=E5=AE=8C?= =?UTF-8?q?=E5=96=84=20stm32=20=E7=9C=8B=E9=97=A8=E7=8B=97=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/stm32/libraries/HAL_Drivers/drv_wdt.c | 34 +++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_wdt.c b/bsp/stm32/libraries/HAL_Drivers/drv_wdt.c index 473a03a72c..d094e8a135 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_wdt.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_wdt.c @@ -23,7 +23,7 @@ static rt_watchdog_t watchdog; static rt_err_t wdt_init(rt_watchdog_t *wdt) { hiwdg.Instance = IWDG; - hiwdg.Init.Prescaler = IWDG_PRESCALER_32; + hiwdg.Init.Prescaler = IWDG_PRESCALER_256; hiwdg.Init.Reload = 0x00000FFF; #if defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32F7) @@ -48,13 +48,43 @@ static rt_err_t wdt_control(rt_watchdog_t *wdt, int cmd, void *arg) break; /* set watchdog timeout */ case RT_DEVICE_CTRL_WDT_SET_TIMEOUT: - hiwdg.Init.Reload = *((rt_uint32_t*)arg); +#if defined(LSI_VALUE) + if(LSI_VALUE) + { + hiwdg.Init.Reload = (*((rt_uint32_t*)arg)) * LSI_VALUE / 256 ; + } + else + { + LOG_E("Please defined LSI_VALUE`s value!"); + } +#else + #error "Please defined LSI_VALUE`s value!" +#endif + if(hiwdg.Init.Reload > 0xFFF) + { + LOG_E("wdg set timeout parameter too large."); + return -RT_EINVAL; + } if (HAL_IWDG_Init(&hiwdg) != HAL_OK) { LOG_E("wdg set timeout failed."); return -RT_ERROR; } break; + case RT_DEVICE_CTRL_WDT_GET_TIMEOUT: +#if defined(LSI_VALUE) + if(LSI_VALUE) + { + (*((rt_uint32_t*)arg)) = hiwdg.Init.Reload * 256 / LSI_VALUE; + } + else + { + LOG_E("Please defined LSI_VALUE`s value!"); + } +#else + #error "Please defined LSI_VALUE`s value!" +#endif + break; default: return -RT_ERROR; } -- GitLab