×
单片机 > 单片机程序设计 > 详情

STM32F10xxx的三种低功耗模式

发布时间:2020-05-19 发布时间:
|

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


 


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总线上未被使用的外设时钟

 

--------------------- 




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何为单片机选择合适的负载电容