STM32 L 低功耗 设置
STM32 L 低功耗 设置
好的,以下是针对 STM32L 系列(低功耗系列)设置低功耗模式的核心要点和步骤的中文指南:
? 核心思路
- 选择合适的低功耗模式: STM32L 提供了多种模式,功耗越低,唤醒源越少,唤醒后的恢复时间越长。
- 关闭不需要的功能和外设: 时钟、外设、GPIO引脚等在进入低功耗前应妥善配置。
- 优化时钟系统: 降低时钟频率、使用低功耗时钟源(LSI, LSE, MSI)是降低功耗的关键。
- 配置唤醒源: 确保有合适的机制(外部中断、RTC闹钟、特定事件等)能将MCU从低功耗模式唤醒。
? 主要低功耗模式概述 (功耗水平:运行 > 睡眠 > 低功耗运行 > 低功耗睡眠 > 停机 > 待机)
-
睡眠模式 (Sleep Mode):
- 仅内核停止,外设仍运行(如果时钟开启)。
- 进入: 执行
WFI(等待中断) 或WFE(等待事件) 指令。 - 唤醒: 任何中断(NVIC)或事件(WFE)。
- 特点: 功耗较低,唤醒速度快。
-
低功耗睡眠模式 (Low-power Sleep Mode):
- 在睡眠模式基础上,进一步关闭部分高速时钟域(如
HCLK,PCLK1,PCLK2),只保留必要的低速时钟(如 LSI/LSE 给 RTC/WDG)。 - 进入: 配置
SLEEPDEEP = 0(Cortex-M 系统控制寄存器) 并在进入睡眠前配置时钟树只保留低频时钟源。 - 唤醒: WFI/WFE。
- 特点: 功耗比普通睡眠更低,唤醒速度稍慢于普通睡眠。
- 在睡眠模式基础上,进一步关闭部分高速时钟域(如
-
停机模式 (Stop Mode):
- 所有时钟停止(HSI, HSE, PLL, MSI 均关闭),内核和外设(除少数低功耗外设)停止工作。SRAM 和寄存器内容保留。
- 进入: 配置
SLEEPDEEP = 1和PDDS = 0(电源控制寄存器 PWR_CR),然后执行 WFI/WFE。 - 唤醒: 特定的外部中断引脚 (EXTI line,需配置为中断模式)、RTC 闹钟/事件、IWDG 复位、某些特定外设事件(取决于型号)。
- 特点: 功耗非常低(微安级别),唤醒时间比睡眠模式长(需要恢复时钟)。
- 电压调节器: 可选择主调节器 (MR) 或低功耗调节器 (LPR)。LPR 功耗更低但唤醒时间更长。
-
待机模式 (Standby Mode):
- 功耗最低的模式。关闭所有时钟(包括MSI、LSI/LSE给RTC/WDG的除外),电压调节器断电(内核供电域完全掉电)。SRAM 和寄存器内容丢失(备份域寄存器除外)。
- 进入: 配置
SLEEPDEEP = 1和PDDS = 1(PWR_CR),然后执行 WFI/WFE。还可配置FWU(快速唤醒) 和ULP(超低功耗)。 - 唤醒: 特定的唤醒引脚 (WKUP pin, 上升沿)、RTC 闹钟/事件、IWDG 复位、NRST 引脚复位。
- 特点: 功耗极低(通常亚微安级别)。唤醒后相当于复位(从头执行程序),需检测复位源标志位 (
PWR_CSR寄存器) 判断是否从待机唤醒。
-
关机模式 (Shutdown Mode) (部分STM32L4/L4+等):
- 比待机模式功耗更低。仅备份域(RTC, 备份寄存器)由 VBAT 供电(如果可用)。
- 进入: 类似待机模式,进入更深层次的断电状态。
- 唤醒: 通常只有特定的唤醒引脚或 RTC 闹钟。
- 特点: 极低功耗(典型值可低至几十纳安),唤醒源非常有限。
? 设置低功耗模式的一般步骤 (以停机模式为例)
-
初始化 & 配置 (进入前):
- 配置系统时钟: 优先使用内部低速时钟(MSI, LSI)或外部低速晶振(LSE)给RTC等必要外设。在进入停机前,通常会降低主频或切换到低速时钟源。
- 配置外设:
- 关闭所有不需要的外设时钟(使用
__HAL_RCC_xxx_CLK_DISABLE()或 LL 库函数)。 - 停止所有不需要的外设(如 ADC, TIMER, UART 等)。
- 处理GPIO引脚:将未使用的引脚配置为模拟输入(功耗最低且防悬空)。对于需要唤醒功能的引脚,配置为外部中断 (EXTI) 模式,并启用中断。
- 关闭所有不需要的外设时钟(使用
- 配置RTC (如果需要定时唤醒): 启用 LSE/LSI 作为时钟源,配置闹钟 (
RTC_ALARM) 或唤醒定时器 (RTC_WAKEUPTIMER)。 - 配置唤醒源 (EXTI): 启用所需唤醒引脚对应的 EXTI 线,并配置触发边沿(上升沿、下降沿或双边沿)。
- 配置低功耗模式选项:
- 在
PWR控制寄存器 (PWR_CR) 中:- 设置电压调节器模式 (MR 或 LPR -
LPDS位)。 - 启用或禁用唤醒引脚 (
EWUPx位)。
- 设置电压调节器模式 (MR 或 LPR -
- 在 Cortex-M 系统控制寄存器 (
SCB->SCR) 中:- 设置
SLEEPDEEP位为 1 (表示进入深度睡眠 Stop/Standby)。 - 设置
SLEEPONEXIT位 (可选,中断处理完后自动进入低功耗)。
- 设置
- 在
- 清除可能的唤醒标志: 读取并清除
PWR_CR中的唤醒标志位 (WUF)。
-
进入低功耗模式:
// 确保所有挂起操作完成(如 DMA 传输) // 清除唤醒标志(如果需要) __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); // HAL 库 // 执行 WFI 或 WFE 指令进入停机模式 __WFI(); // 等待中断唤醒 // 或 __WFE(); // 等待事件唤醒 -
唤醒后的处理:
- MCU 从停机模式唤醒后,首先会复位时钟系统(HSI 作为默认系统时钟)。
- 检查唤醒源: 读取
PWR->CSR(或PWR_EXTSCR在某些系列) 中的唤醒标志位 (WUFx,SBF,WUF等) 来确定是什么事件唤醒了 MCU。 - 重新初始化系统: 根据应用需求重新配置系统时钟(恢复到工作频率)、外设、GPIO 等。这是最关键的一步! 不要假设唤醒后时钟和外设配置还保留(它们通常恢复到默认或复位状态)。
- 处理唤醒事件: 根据检测到的唤醒源执行相应的操作(如读取传感器、发送数据、执行任务)。
- 清除唤醒标志: 在重新配置或处理完事件后,清除相应的唤醒标志位。
? 关键配置与注意事项
- CubeMX (STM32CubeIDE): 强烈推荐使用! 图形化配置大大简化了低功耗设置:
- 在 "Pinout & Configuration" -> "System Core" -> "RCC": 配置时钟源 (尤其低速时钟 LSE/LSI)。
- 在 "Pinout & Configuration" -> "System Core" -> "GPIO": 配置唤醒引脚的 EXTI 模式。
- 在 "Pinout & Configuration" -> "System Core" -> "PWR": 选择电压调节器模式、启用唤醒引脚、选择停机模式下SRAM保留等。
- 在 "Middleware" -> "RTC": 配置 RTC 时钟源和唤醒定时器/闹钟。
- 在 Clock Configuration 标签页:设计进入前后的时钟树。
- 生成代码后,在
main.c的MX_PWR_Init()函数中可以看到配置好的 PWR 初始化代码。还需在主循环或合适位置添加进入WFI/WFE的代码。
- 直接寄存器操作 / LL库:
- 熟悉
PWR、RCC、EXTI、RTC、SYSCFG、SCB->SCR等寄存器的相关控制位。 - LL库 (
stm32l4xx_ll_pwr.h,stm32l4xx_ll_rcc.h等) 提供了操作这些位的便捷函数。
- 熟悉
- 调试接口影响: SWD/JTAG 调试接口在连接调试器时会显著增加功耗。测量真实功耗时需断开调试器或将其置于低功耗模式(如果支持)。
- 唤醒源配置: 务必确保配置的唤醒源是有效的,并且能够产生预期的中断/事件。
- 唤醒后时钟: 牢记停机/待机唤醒后时钟初始化非常重要!代码开头部分通常有时钟初始化函数 (
SystemClock_Config()),确保它能根据唤醒后的状态正确配置时钟。 - 测量功耗: 使用精密万用表或电流计测量不同模式下的功耗,验证配置效果。注意断开不必要的负载。
- 数据手册: 务必仔细查阅你所使用的具体 STM32L 型号的参考手册 (Reference Manual) 和数据手册 (Datasheet),其中包含最准确的低功耗模式细节、电气特性、配置寄存器和限制条件。
✅ 实用代码片段 (伪代码/HAL风格)
// 假设使用停机模式,WKUP1 (PA0) 作为唤醒源,RTC 闹钟作为另一唤醒源
// 1. 初始化 (通常在 main 初始化部分)
MX_GPIO_Init(); // GPIO 配置中 PA0 配置为 EXTI 唤醒源
MX_RTC_Init(); // RTC 配置开启,启用闹钟
MX_PWR_Init(); // PWR 配置:电压调节器选 LPR,启用 WKUP1 引脚等
// 主循环或任务中
while (1) {
// ... 执行主任务 ...
// 准备进入停机
HAL_SuspendTick(); // 挂起 SysTick 中断避免在唤醒前触发
HAL_PWREx_EnableFlashPowerDown(); // 启用Flash掉电 (可选,进一步省电)
HAL_ADC_Stop(&hadc1); // 停止所有运行中的外设
HAL_UART_Abort(&huart1);
// ... 关闭其他外设时钟 (使用 __HAL_RCC_xxx_CLK_DISABLE()) ...
// 配置未使用GPIO为Analog以省电 (根据具体情况)
// ... GPIO配置代码 ...
// 进入停机模式
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
// ****** MCU 在此处进入停机 ******
// ****** 唤醒后从这里继续执行 ******
// 退出停机后的处理
HAL_PWREx_DisableFlashPowerDown(); // 恢复Flash
SystemClock_Config(); // !!!绝对关键!!! 重新配置系统时钟(唤醒后默认是HSI)
HAL_ResumeTick(); // 恢复 SysTick
// 检查唤醒源 (可选)
if (__HAL_PWR_GET_FLAG(PWR_FLAG_WU) != RESET) { // 唤醒(WKUP) 引脚唤醒标志
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
// 处理 WKUP 唤醒事件
}
if (__HAL_RTC_GET_FLAG(&hrtc, RTC_FLAG_ALRAF) != RESET) { // RTC闹钟唤醒标志
__HAL_RTC_CLEAR_FLAG(&hrtc, RTC_FLAG_ALRAF);
// 处理 RTC 闹钟唤醒事件
HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BIN); // 重新设置下一次闹钟
}
// 重新初始化所需外设 (因为时钟可能变了)
MX_USART1_UART_Init();
MX_ADC1_Init();
// ... 其他外设初始化 ...
}
通过遵循这些指南、选择合适的模式、仔细配置时钟、外设和唤醒源,并特别注意唤醒后的时钟恢复,你就能有效地利用 STM32L 系列强大的低功耗特性来延长电池供电设备的续航时间。祝你开发顺利!??
STM32L151xC与STM32L152xC:超低功耗MCU的卓越之选
STM32L151xC与STM32L152xC:超低功耗MCU的卓越之选 在当今的电子设计领域,超
2026-03-11 16:30:09
stm32低功耗设计技巧
多个系列和型号可供选择,其中一些专门设计用于低功耗应用。 例如,STM32L系列芯片采用超低泄漏工艺,具有领先的处理性能和代码密度,以及多个动态可选电压范围,可在能耗上提供显著增益。 优化电源管理 : 使用多个独立的
2024-11-19 15:52:19
STM32HAL低功耗时也能调试设置,调试模式独立看门狗可被冻结L151
STM32HAL低功耗时也能调试设置,调试模式独立看门狗可被冻结L151
资料下载
山中老虎
2021-12-07 20:36:10
超低功耗研发-STM32L151C8T6芯片(五)低功耗设计总结
超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述超低功耗研发-STM32
资料下载
张燕
2021-11-06 14:36:01
STM32L151XX和STM32L152XX超低功耗32位MCU Cortex的数据手册免费下载
本文档的主要内容详细介绍的是STM32L151XX和STM32L152XX超低功耗32位MCU Cortex的数据手册免费下载。
资料下载
择持ccc
2020-01-14 08:00:00
STM32L475低功耗实例分享
1.项目背景MCU:STM32L475外部AD:ADS1220外部RTC:DS3231扩展Flash:sst25vf016b外部SDUSB温湿度计4852.目标MCU运行在低功耗模式,每1小时读取
STM32L053C8 MCU上的低功耗模式详解
知道可用的低功耗模式,如何配置它们以及最适合哪些任务。本文概述了STM32L053C8 MCU上的低功耗模式。但是,由于该系列的
2020-11-09 15:23:20
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览