一、电源管理—实现低功耗
电源对电子设备的重要性不言而喻,它是保证系统稳定运行的基础,而保证系统能稳定运行后,又有低功耗的要求。 在很多应用场合中都对电子设备的功耗要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久,且期间不需要任何维护;由于智慧穿戴设备的小型化要求,电池体积不能太大导致容量也比较小,所以也很有必要从控制功耗入手,提高设备的续行时间。 因此, STM32 有专门的电源管理外设监控电源并管理设备的运行模式, 确保系统正常运行,并尽量降低器件的功耗。
默认情况下,系统复位或上电复位后,微控制器进入运行模式。在运行模式下, CPU 通过HCLK 提供时钟,并执行程序代码。系统提供了多个低功耗模式,可在 CPU不需要运行时(例如等待外部事件时)节省功耗。由用户根据应用选择具体的低功耗模式,以在低功耗、短启动时间和可用唤醒源之间寻求最佳平衡。
详细信息看中文手册的第五章,5.3电源管理
器件有三个低功耗模式:
(1)睡眠模式(Cortex-M4内核停止,外设保持运行,唤醒速度是最快的,
执行WFI (Wait For Interrupt,任何中断都能唤醒)
(2)停止模式(所有时钟都停止,执行PWR_EnterSTOPMode,外部中断控制线唤醒,例如按键)
(3)待机模式(1.2 V 域断电,唤醒速度最慢,程序从头开始运行,就跟手机关机一样,这种模式一般用的不多,调用PWR_EnterSTANDBYMode)
此外,可通过下列方法之一降低运行模式的功耗:
(1)降低系统时钟速度
(2)不使用 APBx 和 AHBx 外设时,将对应的外设时钟关闭
二、睡眠模式
在睡眠模式中,仅关闭了内核时钟,内核停止运行,但其片上外设, CM4 核心的外设全都还照常运行。有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是 WFI(wait for interrupt)和 WFE(wait for event),即由等待“中断”唤醒和由“事件”唤醒。
1.睡眠模式各种特性
立即睡眠 :在执行 WFI 或 WFE 指令时立即进入睡眠模式。
退出时睡眠 :在退出优先级最低的中断服务程序后才进入睡眠模式。
进入方式: 内核寄存器的 SLEEPDEEP = 0 ,然后调用 WFI 或 WFE 指令即可进入睡眠模式;
另外若内核寄存器的 SLEEPONEXIT=0 时 , 进入“ 立即睡眠 ” 模式SLEEPONEXIT=1 时,进入“退出时睡眠”模式。
唤醒方式: 如果是使用 WFI (Wait From Interrupt)指令睡眠的,则可使用任意中断唤醒;如果是使用 WFE(Wait From Event) 指令睡眠的,则由事件唤醒。
睡眠时 ,关闭内核时钟,内核停止,而外设正常运行,在软件上表现为不再执行新的代码。这个状态会保留睡眠前的内核寄存器、内存的数据。
唤醒延迟 :无延迟。
唤醒后 ,若由中断唤醒,先进入中断,退出中断服务程序后,接着执行 WFI 指令后的程序;若由事件唤醒,直接接着执行 WFE 后的程序。
进入睡眠模式之后,任意中断可以唤醒CPU。
三、停止模式
在停止模式中,进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其 1.2V 区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息,所以从停止模式唤醒,并重新开启时钟后,还可以从上次停止处继续执行代码。停止模式可以由任意一个外部中断(EXTI)唤醒。在停止模式中可以选择电压调节器为开模式或低功耗模式,可选择内部 FLASH 工作在正常模式或掉电模式。
当退出停止模式后,它是选择内部的HSI RC振荡器作为时钟,但是这不是我们想要的CPU的频率,所以重新调用SysteInit函数
1.停止模式的各种特性
调压器低功耗模式 :在停止模式下调压器可工作在正常模式或低功耗模式,可进一步降低功耗
FLASH掉电模式 : 在停止模式下 FLASH 可工作在正常模式或掉电模式,可进一步降低功耗
进入方式 : 内核寄存器的 SLEEPDEEP =1, PWR_CR 寄存器中的 PDDS=0,然后调用 WFI或 WFE 指令即可进入停止模式;
PWR_CR 寄存器的 LPDS=0 时,调压器工作在正常模式, LPDS=1 时工作在低功耗模式;
PWR_CR 寄存器的 FPDS=0 时, FLASH 工作在正常模式, FPDS=1 时进入掉电模式。
唤醒方式 : 如果是使用 WFI 指令睡眠的,可使用任意 EXTI 线的中断唤醒;如果是使用 WFE 指令睡眠的,可使用任意配置为事件模式的 EXTI 线事件唤醒。
停止时, 内核停止,片上外设也停止。这个状态会保留停止前的内核寄存器、内存的数据。
唤醒延迟 : 基础延迟为 HSI 振荡器的启动时间,若调压器工作在低功耗模式,还需要加上调压器从低功耗切换至正常模式下的时间,
若 FLASH 工作在掉电模式,还需要加上 FLASH 从掉电模式唤醒的时间。
唤醒后, 若由中断唤醒,先进入中断,退出中断服务程序后,接着执行 WFI 指令后的程序;若由事件唤醒,直接接着执行 WFE 后的程序。唤醒后, STM32会使用 HIS 作为系统时钟。
由外部中断按键触发唤醒。
四、待机模式
待机模式,它除了关闭所有的时钟,还把 1.2V 区域的电源也完全关闭了,也就是说,从待机模式唤醒后,由于没有之前代码的运行记录,只能对芯片复位,重新检测 boot 条件,
从头开始执行程序。它有四种唤醒方式,分别是 WKUP(PA0)引脚的上升沿(相当于手机的电源键), RTC 闹钟事件(相当于手机自动开机), NRST 引脚的复位和 IWDG(独立看门狗)复位。
1、 待机模式的各种特性
进入方式 : 内核寄存器的 SLEEPDEEP =1, PWR_CR 寄存器中的 PDDS=1, PWR_CR 寄存器中的唤醒状态位 WUF=0,然后调用 WFI 或 WFE 指令即可进入待机模式;
唤醒方式 : 通过 WKUP 引脚的上升沿, RTC 闹钟、唤醒、入侵、时间戳事件或NRST 引脚外部复位及 IWDG 复位唤醒。
待机时 , 内核停止,片上外设也停止;内核寄存器、内存的数据会丢失;除复位引脚、 RTC_AF1 引脚及 WKUP 引脚,其它 I/O 口均工作在高阻态。
唤醒延迟 : 芯片复位的时间
唤醒后 , 相当于芯片复位,在程序表现为从头开始执行代码
上一篇:STM32红外串口接收
下一篇:STM32嵌入式FLASH擦除与写入
推荐阅读最新更新时间:2024-11-10 11:46
推荐帖子
- 专业音响的发祥地
- 本帖最后由jameswangsynnex于2015-3-320:00编辑北京俊杰伟业电子设备商贸有限公司是一家以专业音频、视频、灯光以及智能控制产品为主的渠道运营商,公司经过多年的发展与积累规模不断壮大,公司现在成立了人力资源部,行政部,财务部,技术部,市场部,工程部,设备租赁部,后勤部,公司为了更好的展示产品还下设有门市。公司一直致力于新产品的推广与应用,为广大的工程商和产品生产厂家提供桥梁和后续保障工作,公司产品能够更好的服务用户是我公司不懈努力的目标。我公司现主要经营:美
- zhangxiaowei123 移动便携
- iPhone4移动电源
- 大家好,有谁有iPhone4移动电源电路的电路图吗,制作iPhone移动电源有什么要求吗?跟普通手机充电电源一样吗?还是有其他的要求!iPhone4移动电源自己先顶一下
- wzq06633278902 电源技术
- 用 INT0做中断,为什么进了去出不了!!!哪里出问题了?????
- 现在玩个红外接收的模块,用INT0做中断,为什么进了去出不了!!!哪里出问题了?????-----------------------------------把程序贴上-------------#includereg52.h#includeabsacc.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintuintq;//------1602---------//sbit
- 刘W杰 51单片机
- avr studio 6.0 下 mega 64 串口中断问题
- 我是AVR新手,在avrstudio6.0下学习mega64的串口0,波特率已经配置成9600,发送函数调试成功,现在调不通中断方式下的接收程序,程序片段如下,望知道的好友指导指导,谢谢中断使能voidUsart0InterruptConfig(){UCSR0B=(1RXCIE0)|(1RXEN0)|(1TXEN0);sei();}中断服务函数ISR(SIG_UART0_RECV){temp=UDR0;
- eassion Microchip MCU
- SD卡数据读取
- 由于现在要做一个支持SD卡的数码相框,遇到一个问题,就是怎样用FPGA实现SD卡中的图片数据的读取,希望各位大侠指点一哈!SD卡数据读取粗看起来这个问题很大,跟U盘厂商协商一下。须要有以下知识:FAT文件系统,SD协议,(图片)文件格式我觉得要想读取里面的信息首先要知道SD卡的协议然后了解图片在里面的是怎么存储的这样才有可能存取里面的信息uping先搞定SD协议,现在大容量卡是2.0的协议,然后实现FAT文件系统,最后是图片文件的格式先找SD的IP核,然后基于这个实现
- hlyft 嵌入式系统
- 【Follow me第二季第2期】arduinoUNOR4+homeassistant任务提交
- 很开心又一次参加得捷和eeworld联合举办的followme活动。这次活动使用的板卡是ArduinoUNOR4WiFi。其实对于arduino还是有一些小情结的,因为当时虽然第一款学的MCU是51,但真正入门并领略了微电子的乐趣,还是arduinoUNOR3,所以这次能参加followme的活动还是很nice的。任务实现简介:这次完成的任务主要有以下这些,具体实现方式相见后面。入门任务(必做):搭建环境并开启第一步Blink/串口打印Hell
- 白菜虫虫 DigiKey得捷技术专区
设计资源 培训 开发板 精华推荐
- AM6TW-2405DH35Z ±5V 6 瓦双路输出 DC/DC 转换器的典型应用
- 具有反馈关断功能的 LT1120CN8 5V 稳压器的典型应用电路
- #第六届立创电赛#一个普通的蓝牙小音响
- EVAL-AD5204SDZ,用于 AD5204 四通道、256 位、数字电位器的评估板
- LTC2757ACLX 演示板,具有软跨距 (1LSB INL) 的 18 位并行 Iout DAC
- NCP114MXTCGEVB、CMOS 低压差稳压器、300mA、3.3V 有源放电评估板
- LTM8003IY -5Vout 从 5V 到 35Vin 正负转换器的典型应用电路
- 【立创开发板】嘉立创智能车
- 基于EG1151的升降压电压模块
- ADP5054-EVALZ,用于 ADP5054 4 通道电源管理单元 (PMU) 的评估板