diff --git a/Source/system/watchdog.c b/Source/system/watchdog.c new file mode 100644 --- /dev/null +++ b/Source/system/watchdog.c @@ -0,0 +1,33 @@ +// +// Watchdog: configure and initialize the watchdog peripheral +// + +#include "stm32f0xx_hal.h" + +#include "config.h" +#include "system/watchdog.h" + +#ifdef WATCHDOG_ENABLE +static IWDG_HandleTypeDef hiwdg; +#endif + +void watchdog_init(void) +{ +#ifdef WATCHDOG_ENABLE + hiwdg.Instance = IWDG; + hiwdg.Init.Prescaler = IWDG_PRESCALER_4; + hiwdg.Init.Window = 4095; + hiwdg.Init.Reload = 4095; + HAL_IWDG_Init(&hiwdg); + watchdog_feed(); + HAL_IWDG_Start(&hiwdg); + +#endif +} + +void watchdog_feed(void) +{ +#ifdef WATCHDOG_ENABLE + HAL_IWDG_Refresh(&hiwdg); +#endif +}