STM32F10xxx的三种低功耗模式

稍微整理一下开发资料和网络上的低功耗知识。

 

STM32F10xxx有三种低功耗模式:

1.睡眠模式(M3内核停止,外设仍在运行,功耗最高):

void PWR_EnterSleepMode(uint8_t PWR_SLEEPEntry); //睡眠模式

中断和唤醒事件可唤醒(中文参考手册4.3.3)。

 

2.停止模式(所有时钟停止,功耗较低,约20uA):

void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry); //停机模式

/*
  * PWR_Regulator: specifies the regulator state in STOP mode.  //选择电源调节器的状态
  *   This parameter can be one of the following values:
  *  PWR_Regulator_ON: STOP mode with regulator ON   //电源不进低功耗 唤醒基本没延迟 功耗稍微大一些
  *  PWR_Regulator_LowPower: STOP mode with regulator in low power mode  //电源进低功耗 唤醒启动有一点延迟
  * PWR_STOPEntry: specifies if STOP mode in entered with WFI or WFE instruction.//选择是WFI还是WFE
  *   This parameter can be one of the following values:
  *  PWR_STOPEntry_WFI: enter STOP mode with WFI instruction //中断唤醒
  *  PWR_STOPEntry_WFE: enter STOP mode with WFE instruction //事件唤醒
  */

多选用此模式,功耗较低,任一中断可唤醒。

停机模式唤醒后自动选择HSI RC振荡器为系统时钟,看自己的应用是否需要重新配置,一般都需要重新配置,直接调用系统时钟配置函数。停机模式唤醒后,flash程序是从中断或事件开始执行的。

做到停止模式的更低功耗(摘自网络):配置电源进入低功耗PWR_Regulator_LowPower,把所有引脚IO口释放,全部配置成模拟输入状态,IO口几乎0消耗。(唤醒后要重新配置IO口)。

 

3.待机模式(1.8V电源关闭,功耗最低,2uA左右):

有四种方式可以退出待机模式:一个外部复位(NRST 引脚上升沿)、 IWDG 复位、 WKUP 引脚上的上升沿、RTC 闹钟事件。

 

进入待机模式(设置 WK_UP 引脚作为唤醒源):

1、因为要配置电源控制寄存器,所以必须先使能电源时钟:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能 PWR 外设时钟

2、使能时钟之后后再设置 PWR_CSR 的 EWUP 位,使能 WK_UP 用于将 CPU 从待机模式唤醒。

PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能

3、设置 SLEEPDEEP 位, 设置 PDDS 位,执行 WFI 指令,进入待机模式:

void PWR_EnterSTANDBYMode(void); //待机模式

4、最后编写 WK_UP 中断函数:
通过 WK_UP 中断(PA0 中断)来唤醒 CPU,所以有必要设置一下该中断函数,同时也可以通过该函数进入待机模式。

 

低功耗模式之外的降低功耗办法:

降低系统时钟:对预分频寄存器编程

关闭AHB和APB总线上未被使用的外设时钟
 

 


 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值