用途:引导代理处理 MCU 低功耗模式,包括 sleep 与深度睡眠(stop/standby)的取舍、外设与总线时钟门控、唤醒源配置和实际电流测量,示例以 STM32 为主,Cortex-M 的 WFI/WFE 模式可广泛套用。
适用场景:电池供电固件缺少功耗预算、需权衡唤醒延迟与功耗、调试“无法唤醒”或“睡眠仍为 mA 级”、在交付 RTOS 空闲钩子或裸机主循环睡眠之前,以及配合裸机中断与异常相关技能使用。
工作流:先建立功耗模式层级(Run 电流最高;Sleep CPU 关、外设与 RAM 保持、任意 IRQ 唤醒;Stop CPU 与外设多关闭、RAM 保留、EXTI/RTC/UART 唤醒;Standby 外设关闭、SRAM 多被清空、WKUP 引脚或 RTC 唤醒、电流最低,状态需存入备份域或外部 EEPROM)。进入 Sleep 可用 __WFI() 或 __WFE(),进入前需清除挂起中断,否则可能立即唤醒。Stop 模式示例中关闭不需要的时钟、清唤醒标志、置 PDDS 与 SLEEPDEEP 后调用 __WFI(),唤醒后需重新初始化在 Stop 中丢失的时钟与寄存器。时钟门控清单:睡眠前关闭未用外设时钟、关闭 ADC/DAC 连续模式、停止 DMA、让外设进入低功耗、选用可行的最低调压档。唤醒源包括 EXTI GPIO(SYSCFG 与 EXTI IMR、边沿触发)、RTC 闹钟、部分 MCU 的 UART 起始位检测;IWDG 不是唤醒源,会复位设备。测量建议用串联在 VDDA/VDD 的电流表并在短采样窗内测 uA,用 DWT 周期计数器测唤醒延迟,并在相同时钟树下对比运行与睡眠电流。FreeRTOS 的 configUSE_TICKLESS_IDLE 映射到 WFI/Stop,需与相关技能协同。
常见问题:睡眠仍 mA 级多因 SWD 调试接口活动,应断开调试器并禁用 DBGMCU;WFI 立即唤醒多因 NVIC 存在挂起 IRQ,需先清标志;唤醒后丢状态通常是误入 Standby 而非 Stop;唤醒后 UART 失效是时钟树未恢复,需调用 SystemInit() 路径;电流高于数据手册 uA 值常因 GPIO 悬空,未用引脚应设为模拟或上下拉。
调用示例:/low-power-embedded Configure STM32 Stop mode with EXTI0 wake and PLL restore。
限制:资料未提供具体支持的 MCU 型号范围、依赖版本、安装方式及收费信息,暂未提供。