PWR(低功耗模式)(STM32学习笔记)

PWR简介

本节学习如何使用PWR的低功耗模式来降低STM32的功耗,以及各种模式对应的使用条件。


低功耗模式

从上到下三种模式,越往下功耗越低,相应的唤醒难度也越大;唤醒条件表中也给出了,WFI表示中断唤醒,WFE表示事件唤醒(本节采用中断唤醒)。


 睡眠模式

进入睡眠模式:__WFI();

只需要一句代码,程序在执行到这句后立刻进入睡眠模式,只要有任一中断信号产生,就会停止睡眠,并从暂停的地方开始执行下一步代码。(可以理解为睡眠模式是将程序暂停了,只有中断信号才能使程序从暂停的位置继续运行(当然是先进入中断函数再返回主函数继续执行))


停机/停止模式

进入停机/停止模式:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);

PWR_EnterSTOPMode(PWR_Regulator_ON,PWR_STOPEntry_WFI);

//退出停止模式后,默认时钟变成HSI:8MHz
SystemInit();//调用这个函数,系统时钟恢复72MHz

从停机模式开始就需要用到PWR的库函数,首先要使能PWR外设时钟;

接着调用PWR_EnterSTOPMode进入停止模式,里面有两个参数选择,第一个选择电压调节器是打开还是处于低功耗模式,低功耗模式下唤醒会有一定的延时;第二个参数选择外部中断唤醒还是事件唤醒。停机模式只能由外部中断唤醒。

系统时钟初始化,将系统时钟恢复为72MHz;


待机模式

进入待机模式:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
PWR_EnterSTANDBYMode();

使能PWR时钟;

使用无参函数PWR_EnterSTANDBYMode();进入待机模式。

进入待机模式后,只能由特定的方式唤醒STM32:如设定RTC闹钟,使用RTC_SetAlarm();函数,当RTC的秒计数器等于设定的闹钟值时,会唤醒STM32;还有WKUP引脚的上升沿,使用函数   PWR_WakeUpPinCmd(ENABLE);在对应的PA0引脚产生上升沿也能唤醒主机。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sakabu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值