STM32——PWR电源控制的低功耗模式

1、理论知识

本节主要学习配置低功耗模式:防止在空闲时候耗电(关闭/唤醒哪些硬件很重要)

虽然STM32外部需要使用3.3V供电,但内部核心电路CPU、外设和存储器使用1.8V供电即可,这3者需要与外界交流时才需要3.3V供电

从上到下:越来越省电,越来越不容易唤醒,硬件关的越来越多

关闭时钟:所有有关运算和时钟的程序会停,但是在存储器和寄存器的数据依然保留

关闭电源(电压调节器):电路和操作都停止

睡眠模式:相当于打一个盹,任何中断或者事件都可以唤醒,一般省电,LPDS=0表示电压调节器开启

下面两种模式只关闭了HSI和HSE高速时钟,并没有关闭LSI和LSE低速时钟(还可以供电给RTC和独立看门狗):

PDDS=0:停机模式,LPDS=1表示电压调节器进入低功耗(更省电,但是在唤醒模式需要花更多时间),此时电压调节器可能是0/1,电源没关闭,只有外部中断可唤醒,此时CPU、外设都关闭,"非常省电"

PDDS=1:待机模式,SLEEPDEEP置1进入深度睡眠模式,WAKEUP上升沿/RTC闹钟时间/NRST外部复位/IWDG独立看门狗只有这几个信号可唤醒,CPU、外设和电源均关闭。"下班回家睡觉""极为省电"

以下是标志位的流程图:

(1)睡眠模式

一般可以在主循环最后面+WFI/WFE:先执行主程序------睡眠------唤醒之后------再执行主程序------再睡眠

事件唤醒方式:

(2)停机模式

如果在程序启动后进入停机模式,再唤醒后没有配置HSE的代码(这部分代码中会*某个值,输出相应的主频数,HSE本身是8MHz),那主频就从72MHz变成了由HSI的8MHz,注意!!!调用SystemInit函数即可重新配置HSE。

如果主频变成了8MHz,那么可能是外部晶振出现了问题。

(3)待机模式

由于数据丢失,因此程序需要从头开始运行

降低主频也可以达到省电的效果:

之后是代码部分:

配置时钟步骤:首先是将启动HSI------恢复各种缺省配置------调用setsysclock函数进行分配;

执行各类不同的配置函数------setsysclock72/56/48/36等;

setsysclockto72函数中进行真正的配置:选择HSE(本身是8MHz)作为锁相环输入------锁相环进行9倍频(8*9=72MHz)------锁相环输出作为主频

(1)修改主频(一般条件下不建议)

修改下的代码即可:

当主频发生变化后,有许多运算等需要进行重新配置,需要注意!

实验如下所示:

首先是72MHz:

Running1s闪烁一次

72M

之后是36MHz:

Running2s闪烁一次

36M

(2)睡眠模式+串口发送/接收(只能在睡眠模式下使用该功能,不影响串口数据的发送和接收)

在主程序中直接增加双下划线后WFI()(多用这种方式)/__WFE()即可启用睡眠模式

流程:初始化串口配置------检查数据标志位------发送数据------显示接收数据------进入睡眠模式------串口发送数据时唤醒CPU进行数据传输------再到睡眠模式

在进行这个模式的时候要注意,将睡眠模式代码写入之后,尝试其他代码时,Keil开始显示no target connect类似的提示,经过多次尝试,解决方法:先按住复位键------点击Keil软件的下载程序按钮------按住复位键一秒之后松开,这样就可以把其他程序拷入成功解决以上问题。

实验结果:

串口发送数据时:

OLED显示结果:

其中只有当串口助手点击发送时,OLED才显示Running,表明在进行数据传输,之后进入睡眠状态。

SLeep

(3)停机模式+对射式红外传感器计数

首先在main函数中,开启PWR的时钟

之后在while中增加停机模式的代码:

实验结果:当遮挡传感器时会进行一次计数并显示Running,之后进入停机模式

Stop

(4)待机模式+RTC实时时钟

在while函数末尾加入:

整个程序是从头开始执行,从int main函数开始执行,因此会自动调用SystemInit,初始化时钟,因此不需要再配置。

实验结果:

standby

以上实验就是PWR的三种低功耗下分别可以实现的功能。

相关推荐
嵌入式分享1 小时前
嵌入式分#49:浅 8080,RGB,LVDS 与 MIPI 显口
嵌入式硬件·lcd
szarron1 小时前
VNA6 便携式矢量网络分析仪|1MHz‑6.3GHz 手持 VNA 真实应用场景全解析
前端·嵌入式硬件·信息可视化·数据挖掘·数据分析
゛凌乱的记忆づ2 小时前
50元从零到成品:一套AI辅助的嵌入式实战入门教程——ADC采集篇
stm32·单片机·嵌入式硬件
女神下凡2 小时前
芯参谋(31):SPI NOR Flash 电路设计指南
arm开发·单片机·嵌入式硬件·fpga开发·设计规范
csg11073 小时前
上电没反应、运行中死机、现场“抽风”——单片机控制板异常排查六步法
单片机·嵌入式硬件
小程序设计3 小时前
基于单片机的恒温水箱设计
单片机·嵌入式硬件
小程序设计4 小时前
基于单片机的大棚温湿度自动监控系统
单片机·嵌入式硬件
XiHongShi20167 小时前
STM32F407 CRC-循环冗余校验例程,建议保存学习
stm32·单片机
lhbweilai8 小时前
结合手册调试各个功能的寄存器+最后通过寄存器编写SPI的初始化和读写函数
stm32·单片机
小程序设计10 小时前
本科毕设避坑|大数据 / 单片机物联网 / 网络工程 / PLC / 机械设计选题与落地心得
java·hive·hadoop·单片机