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

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

CubeMX配置如下图:

测试代码如下:
/* 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_Suspend
tick(); /* 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 */}