STM32低功耗模式

在STM32F1系列单片机中低功耗有三种模式,睡眠,停止,待机,三种模式电源消耗依次降低,唤醒时间依次升高,唤醒源不同

正常模式

芯片正常给外设(IO/SPI/TIM),内核(CM3),存储器(SRAM / FLASH)提供电源和时钟信号

睡眠模式

介绍:

睡眠模式下芯片把内核时钟信号停掉了,程序节能差,不会复位,睡眠模式几乎不用

进入:

程序有两种方式可以进入睡眠模式,

  1. WFI内核指令
  2. WFE内核指令

唤醒:

程序根据指定内核指令进入的睡眠模式,有相应的唤醒条件

  1. 通过WFI进入睡眠模式:任意中断
  2. 通过WFE进入睡眠模式:唤醒事件

停止模式

介绍:

停止模式芯片将时钟系统关闭了,但依旧供着电,保留着上次运行的数据,不会复位

进入:

PDDS和LPDS + SLEEPDEEP位 + WFI或WFE

唤醒:

任意外部中断都可唤醒,在唤醒后要重新配置时钟,程序从进入停止模式的地方运行

待机模式

介绍:

待机模式下芯片将时钟系统和供电系统 都关闭了,能做到最大节能,但程序会复位,待机模式下所有IO引脚都处于高阻态,除了复位引脚,被使能的唤醒引脚,待机模式下不能下载程序,必须退出待机模式才能下载

进入:

PDDS位 + SLEEPDEEP位 + WFI 或 WFE, 在进入待机模式前要清除唤醒位,对CWUF置1,并设置好唤醒源

唤醒:

WKUP 引脚的上升沿,RTC闹钟,NRST 引脚上的外部复位,IWDG复位,在使用WKUP引脚唤醒时要清除WUF标记位,在stm32f1系列,WKUP唤醒固定为PA0高电平唤醒,唤醒后程序从头开始运行

进入流程:

|---|-------------------|-------------------------------|
| 1 | 初始化WKUP为中断触发源 | 参考外部中断引脚初始化 |
| 2 | 外设低功耗处理 | 设置MCU外围外设进入低功耗 |
| 3 | 使能电源时钟 | __HAL_RCC_PWR_CLK_ENABLE (~) |
| 4 | 使能WKUP的唤醒功能 | HAL_PWR_EnableWakeUpPin(~) |
| 5 | 清除唤醒标记WUF | __HAL_PWR_CLRAR_FLAG (~) |
| 6 | 进入待机模式 | HAL_PWR_EnterSTANDBYMode(~) |

相关寄存器

  • SCB_SCR (系统控制寄存器) : 选择停止模式和待机模式,就是 SLEEPDEEP位
  • PWR_CR (电源控制寄存器):设置低功耗相关
  • PWR_CSR (电源控制 / 状态寄存器) :用于查看系统当前状态

PWR_CR

PWR_SCR

相关HAL库驱动函数

|--------------|-------------------------------|----------------|
| 功能描述 | 驱动函数 | 关联寄存器 |
| 进入睡眠模式 | HAL_PWR_EnterSLEEPMode (~) | SCB_SCR |
| 进入停止模式 | HAL_PWR_EnterSTOPMode (~) | PWR_CR/SCB_SCR |
| 进入待机模式 | HAL_PWR_EnterSTANDBYMode(~) | PWR_CR/SCB_SCR |
| 使能WKUP管脚唤醒功能 | HAL_PWR_EnableWakeUpPin(~) | PWR_CSR |
| 清除PWR相关标记位 | __HAL_PWR_CLRAR_FLAG (~) | PWR_CR |
| 使能电源时钟 | __HAL_RCC_PWR_CLK_ENABLE (~) | RCC_APB1ENR |

相关推荐
Yiran_G1 小时前
智能家居自动化为什么会失效?从一次开灯失败看无线通信链路
嵌入式硬件·物联网·智能家居
编程圈子1 小时前
I.MX6U 裸机开发 25. PWM 与 LCD 背光
单片机·嵌入式硬件
创界工坊工作室2 小时前
35-基于AT89C51单片机的罐头生产线传送系统设计
stm32·单片机·嵌入式硬件·51单片机·proteus·生产线
qq_401700412 小时前
MCU串口接收不定长数据的三种方案,哪种最稳?
stm32·单片机·嵌入式硬件
inrichtt3 小时前
第七课时:STM32时钟系统揭秘:从零理解时钟树
c语言·数据结构·stm32·单片机·嵌入式硬件
硅基手札4 小时前
【Linux 内核专栏 17】进程间通信 IPC(上)— 管道·信号·System V IPC·mmap·文件锁
linux·运维·服务器·stm32·单片机·mcu
Zw-awa4 小时前
PID 用顺了,然后呢:增强手术与前馈
stm32
国科安芯4 小时前
无方向脚如何既快又稳:ASC0101S 自动方向感应机理与边沿加速应用研究
网络·嵌入式硬件·低轨卫星·商业航天·抗辐射
额额额对了4 小时前
Linux 驱动开发:基于 platform 总线 + misc 设备的 DS18B20 单总线温度驱动
linux·c语言·开发语言·驱动开发·嵌入式硬件
zcmodeltech4 小时前
沙盘模型控制系统STM32和PLC方案对比:选型逻辑与代码实现
stm32·嵌入式硬件·自动化