停止模式前禁用STM32 HAL IWDG或WWDG(看门狗)

时间:2018-11-16 09:07:05

标签: stm32 watchdog hal

我使用STM32(L0 5)HAL,进入STOP模式之前需要禁用IWDG或WWDG。在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);

1 个答案:

答案 0 :(得分:4)

在任何处理器模式下都不能停止独立监视程序。您必须定期唤醒以重新加载看门狗。您可以做的是将预分频器更改为最大值,以使看门狗计数缓慢。

只有在断开控制器电源后,IWDG才会停止。