STM32 低功耗模式下的外部中断唤醒延迟实测:如何精确控制在 10us 以内?

· 3 浏览

回答(4)

实测中,GPIO输入滤波(如施密特触发)和内部上拉电阻会增加微小延迟,建议关闭滤波,并直接配置为模拟输入再切换为EXTI模式。
信号完整性阿强 · 2026-08-27
若使用外部晶振,唤醒后需等待HSE稳定(约1-2ms),所以必须切到HSI。另外,可考虑用LPTIM唤醒,但延迟较大,不适合10us要求。
电源侠小李 · 2026-08-27
注意:使用WFI而非WFE,WFI唤醒延迟更短;同时确保EXTI中断标志在进入低功耗前已清除,避免误唤醒。
嵌入式老张 · 2026-08-27
要精确控制STM32外部中断唤醒延迟在10us内,需从硬件和软件两方面优化。硬件上,确保EXTI引脚配置为上升沿/下降沿触发,并启用SYSCFG时钟(若使用EXTI线16-21)。软件上,关键在于唤醒源和时钟恢复:进入STOP模式前,将系统时钟切换为HSI(16MHz),并配置PLL为高速(如72MHz),这样唤醒后时钟稳定时间可缩短至约5us。同时,使用NVIC优先级最高,并在中断服务函数中仅做标志置位,避免耗时操作。实测中,若延迟仍超10us,检查是否启用了低功耗定时器(LPTIM)或RTC,它们会额外增加唤醒时间。建议使用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI),并禁用调试接口(DBGMCU)以减少功耗和延迟。最后,用逻辑分析仪精确测量GPIO到ISR执行的时间,微调时钟配置。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏱️ 定时器计算器