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

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 */
}
收藏 评论1 发布时间:2025-3-28 14:10

举报

1个回答
阿衰0110 回答时间:3 天前

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

所属标签

相似问题

官网相关资源

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