Я использую STM32 (L0 5) HAL. Мне нужно отключить IWDG или WWDG перед входом в режим STOP.Приведенный ниже код работает нормально, пока IWDG не перезапустит MCU из режима STOP.Для использования WWDG это происходит намного быстрее и сбрасывается до вызова HAL_PWR_EnterSTOPMode, несмотря на то, что HAL_WWDG_Refresh вызывается после каждой строки.Я также тестировал эти сценарии на Nucleo L05.
iwdgHandle.Instance = IWDG;
iwdgHandle.Init.Prescaler = IWDG_PRESCALER_64;
iwdgHandle.Init.Window = 4095;
iwdgHandle.Init.Reload = 4095;
if (HAL_IWDG_Init(&iwdgHandle) != HAL_OK) // almost 7secs until refresh has to be called
{
_Error_Handler(__FILE__, __LINE__);
}
HAL_PWR_EnableWakeUpPin(WakeSpi_Pin);
HAL_PWREx_EnableUltraLowPower(); // Enable Ultra low power mode
HAL_PWREx_EnableFastWakeUp(); // Enable the fast wake up from Ultra low power mode
HAL_SuspendTick();
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);