You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32WB55进入STOP2模式后无法通过LPTIM1中断唤醒求助

STM32WB55 STOP2模式下LPTIM1中断唤醒失败排查方案

针对你遇到的问题——STM32WB55进入STOP2模式后无法通过LPTIM1中断唤醒,但移除HAL_PWREx_EnterSTOP2Mode后LPTIM1中断正常工作,以下是核心排查点和解决方案:

1. 检查LPTIM1时钟源配置

STOP2模式下APB总线时钟会被关闭,LPTIM1必须依赖**低功耗时钟源(LSI/LSE/LSI1)**才能正常运行:

  • 确认LPTIM初始化时配置了正确的低功耗时钟源,示例:
    static void MX_LPTIM1_Init(void)
    {
      hlptim1.Instance = LPTIM1;
      hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_LSI; // 或LSE,需确保时钟已提前启用
      hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;
      hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;
      // 其他初始化参数...
      if (HAL_LPTIM_Init(&hlptim1) != HAL_OK) Error_Handler();
    }
    
  • 确保低功耗时钟(如LSI)已在系统初始化阶段启用:__HAL_RCC_LSI_ENABLE();

2. 修正从核(Cortex-M0+)电源模式配置

代码中LL_C2_PWR_SetPowerMode(LL_PWR_MODE_SHUTDOWN);将从核设置为SHUTDOWN模式,该模式下从核完全断电,会干扰主核的唤醒逻辑:

  • 将从核电源模式改为与主核STOP2匹配的STOP模式:
    LL_C2_PWR_SetPowerMode(LL_PWR_MODE_STOP);
    

3. 验证LPTIM1中断与唤醒配置

  • 确认LPTIM1中断已正确启用且优先级设置合理:
    HAL_NVIC_SetPriority(LPTIM1_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(LPTIM1_IRQn);
    
  • 进入STOP2前,确保清除所有相关唤醒标志:
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
    __HAL_LPTIM_CLEAR_FLAG(&hlptim1, LPTIM_FLAG_CMPM);
    

4. 确保LPTIM1启动后再进入STOP2

调用HAL_LPTIM_TimeOut_Start_IT后立即进入STOP2可能导致LPTIM未完成初始化,建议添加启动确认步骤:

HAL_LPTIM_TimeOut_Start_IT(&hlptim1, 0xFFFF, period);
// 等待LPTIM比较匹配标志置位,确认定时器已启动
while(__HAL_LPTIM_GET_FLAG(&hlptim1, LPTIM_FLAG_CMPM) == RESET);
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);

5. 排查GPIO配置影响

你将所有GPIO设置为模拟模式并关闭时钟,若LPTIM1使用外部时钟/触发引脚(当前代码未涉及)会导致功能失效。如果是纯内部时钟触发超时中断,此配置无问题,但可尝试保留LPTIM相关引脚默认配置后测试。

内容的提问来源于stack exchange,提问作者Faiz-983654

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:34:56