你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32U5 IWDG的提前唤醒中断无法在STOP模式下触发

[复制链接]
阿衰0110 提问时间:2025-3-28 14:10 / 未解决

我使用的是STM32U585系列芯片,开启了IWDG,并在运行模式下测试提前唤醒中断正常触发,但在进入STOP2模式后,提前唤醒中断无法触发导致无法喂狗,看门狗超时后芯片复位。

手册中写道IWDG可以在停止模式生成唤醒中断,如下图:

image.png

image.png

并且我核查了FLASH选项字节是默认值0x1FEF F8AA无改动,则位17为1,IWDG在停止模式下运行,如下图:

image.png

CubeMX配置如下图:

image.png

image.png

测试代码如下:

/* USER CODE BEGIN 0 */
/**
  * @brief  IWDG提前唤醒中断
  * @param  None
  * @retval None
  */
void HAL_IWDG_EarlyWakeupCallback(IWDG_HandleTypeDef *hiwdg)
{
    HAL_IWDG_Refresh(hiwdg);
}

/**
  * @brief  进入停止模式2
  * @param  None
  * @retval None
  */
void sys_api_power_stop2(void)
{
    HAL_SuspendTick();
    /* Enter the system to STOP2 mode */
    __HAL_RCC_PWR_CLK_ENABLE();
    HAL_PWREx_EnterSTOP1Mode(PWR_STOPENTRY_WFI);
    /* Check that the system was resumed from stop 2 */
    if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) == 0U)
    {}
    /* Clear stop flag */
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_STOPF);
    /* Check that stop flag is cleared */
    if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) != 0U)
    {}
    HAL_ResumeTick();
}
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the System Power */
  SystemPower_Config();

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ICACHE_Init();
  MX_IWDG_Init();
  /* USER CODE BEGIN 2 */
    sys_api_power_stop2();
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    HAL_IWDG_Refresh(&hiwdg);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}
收藏 评论3 发布时间:2025-3-28 14:10

举报

3个回答
阿衰0110 回答时间:2025-3-28 15:02:42

测试了SLEEP、STOP0、STOP1、STOP2和STANDBY模式,仅有SLEEP模式可以正常触发提前唤醒中断。

xmshao 回答时间:4 天前
针对你的反馈,我这边找到相关STM32U575开发板做了验证测试。


从验证测试结果来看,的确发现了跟你反映的相同情况。即当我开启IWDG的早期唤醒


中断后,它无法唤醒STOP模式下的MCU。


从手册描述来看,IWDG中断应该是可以唤醒的,目前从手册上也没有看到基于IWDG中断需要


其它特别注意的地方。


关于这个问题,我会待这边进一步确认后再给你反馈。
xmshao 回答时间:前天 16:05
经确认,这里的IWDG的早期唤醒中断没法唤醒STOP模式下的MCU,在相关的勘误手册里已有单独明确出来。


你可以到www.st.com/stm32u5搜索勘误手册 ES0499阅读。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版