ST意法半导体
直播中

王波

8年用户 1491经验值
私信 关注
[问答]

STM32U5 IWDG的提前唤醒中断无法在STOP模式下触发怎么解决?

  我使用的是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_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 */}

更多回帖

发帖
×
20
完善资料,
赚取积分