stm32 - 在 STOP 模式之前禁用 STM32 HAL IWDG 或 WWDG(看门狗)
问题描述
我使用 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);
解决方案
独立看门狗不能在任何处理器模式下停止。您必须定期醒来以重新加载看门狗。您可以做的是将预分频器更改为最大值,以便看门狗缓慢计数。
仅当您断开控制器与电源的连接时,IWDG 才会停止。
推荐阅读
- c# - 如何过滤具有最新日期的记录
- python-3.x - 如何使用带有 Boto3 的 Lambda 函数的日期验证器标签值过滤 rds 实例
- netsuite - 如何使用 suitescript 1.0 访问项目主记录的库存详细信息?
- google-cloud-platform - 如何使用 GCP Translation API 处理 BigQuery 中的表?
- regex - 使用 grep 搜索以不同“形状”书写的三个单词
- javascript - 在 RSK Regtest 上开发时如何提高块号?
- mysql - 使用删除查询从 mySQL 数据库中删除问题(未找到 404)
- ios - 强制换行位置
- css - 合并两个具有相同渐变背景的 div
- openstack - 如何在 Openstack Kolla 中配置 Octavia?