00. 目录

文章目录

  • 00. 目录
  • 01. 概述
  • 02. 相关类型
  • 03. 相关函数
  • 04. 结构体封装
  • 05. 预留
  • 06. 附录
  • 07. 声明

01. 概述

很多单片机都有低功耗模式,STM32F4 也不例外。在系统或电源复位以后,微控制器处于运行状态。运行状态下的 HCLK 为 CPU 提供时钟,内核执行程序代码。当 CPU 不需继续运行时,可以利用多个低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。

在stm32f4xx_pwr.c 和stm32f4xx_pwr.h 文件中。

02. 相关类型

PWR_PVD_detection_level

/** @defgroup PWR_PVD_detection_level * @{*/
#define PWR_PVDLevel_0                  PWR_CR_PLS_LEV0
#define PWR_PVDLevel_1                  PWR_CR_PLS_LEV1
#define PWR_PVDLevel_2                  PWR_CR_PLS_LEV2
#define PWR_PVDLevel_3                  PWR_CR_PLS_LEV3
#define PWR_PVDLevel_4                  PWR_CR_PLS_LEV4
#define PWR_PVDLevel_5                  PWR_CR_PLS_LEV5
#define PWR_PVDLevel_6                  PWR_CR_PLS_LEV6
#define PWR_PVDLevel_7                  PWR_CR_PLS_LEV7#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLevel_0) || ((LEVEL) == PWR_PVDLevel_1)|| \((LEVEL) == PWR_PVDLevel_2) || ((LEVEL) == PWR_PVDLevel_3)|| \((LEVEL) == PWR_PVDLevel_4) || ((LEVEL) == PWR_PVDLevel_5)|| \((LEVEL) == PWR_PVDLevel_6) || ((LEVEL) == PWR_PVDLevel_7))

PWR_Regulator_state_in_STOP_mode

/** @defgroup PWR_Regulator_state_in_STOP_mode * @{*/
#define PWR_MainRegulator_ON                        ((uint32_t)0x00000000)
#define PWR_LowPowerRegulator_ON                    PWR_CR_LPDS/* --- PWR_Legacy ---*/
#define PWR_Regulator_ON                            PWR_MainRegulator_ON
#define PWR_Regulator_LowPower                      PWR_LowPowerRegulator_ON#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_MainRegulator_ON) || \((REGULATOR) == PWR_LowPowerRegulator_ON))

PWR_Regulator_state_in_UnderDrive_mode

/** @defgroup PWR_Regulator_state_in_UnderDrive_mode * @{*/
#define PWR_MainRegulator_UnderDrive_ON               PWR_CR_MRUDS
#define PWR_LowPowerRegulator_UnderDrive_ON           ((uint32_t)(PWR_CR_LPDS | PWR_CR_LPUDS))#define IS_PWR_REGULATOR_UNDERDRIVE(REGULATOR) (((REGULATOR) == PWR_MainRegulator_UnderDrive_ON) || \((REGULATOR) == PWR_LowPowerRegulator_UnderDrive_ON))

PWR_STOP_mode_entry

/** @defgroup PWR_STOP_mode_entry * @{*/
#define PWR_STOPEntry_WFI               ((uint8_t)0x01)
#define PWR_STOPEntry_WFE               ((uint8_t)0x02)
#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPEntry_WFI) || ((ENTRY) == PWR_STOPEntry_WFE))

PWR_Regulator_Voltage_Scale

/** @defgroup PWR_Regulator_Voltage_Scale * @{*/
#define PWR_Regulator_Voltage_Scale1    ((uint32_t)0x0000C000)
#define PWR_Regulator_Voltage_Scale2    ((uint32_t)0x00008000)
#define PWR_Regulator_Voltage_Scale3    ((uint32_t)0x00004000)
#define IS_PWR_REGULATOR_VOLTAGE(VOLTAGE) (((VOLTAGE) == PWR_Regulator_Voltage_Scale1) || \((VOLTAGE) == PWR_Regulator_Voltage_Scale2) || \((VOLTAGE) == PWR_Regulator_Voltage_Scale3))

PWR_Flag

/** @defgroup PWR_Flag * @{*/
#define PWR_FLAG_WU                     PWR_CSR_WUF
#define PWR_FLAG_SB                     PWR_CSR_SBF
#define PWR_FLAG_PVDO                   PWR_CSR_PVDO
#define PWR_FLAG_BRR                    PWR_CSR_BRR
#define PWR_FLAG_VOSRDY                 PWR_CSR_VOSRDY
#define PWR_FLAG_ODRDY                  PWR_CSR_ODRDY
#define PWR_FLAG_ODSWRDY                PWR_CSR_ODSWRDY
#define PWR_FLAG_UDRDY                  PWR_CSR_UDSWRDY/* --- FLAG Legacy ---*/
#define PWR_FLAG_REGRDY                  PWR_FLAG_VOSRDY               #define IS_PWR_GET_FLAG(FLAG) (((FLAG) == PWR_FLAG_WU) || ((FLAG) == PWR_FLAG_SB) || \((FLAG) == PWR_FLAG_PVDO) || ((FLAG) == PWR_FLAG_BRR) || \((FLAG) == PWR_FLAG_VOSRDY) || ((FLAG) == PWR_FLAG_ODRDY) || \((FLAG) == PWR_FLAG_ODSWRDY) || ((FLAG) == PWR_FLAG_UDRDY))#define IS_PWR_CLEAR_FLAG(FLAG) (((FLAG) == PWR_FLAG_WU) || ((FLAG) == PWR_FLAG_SB) || \((FLAG) == PWR_FLAG_UDRDY))

03. 相关函数


/* Function used to set the PWR configuration to the default reset state ******/
void PWR_DeInit(void);/* Backup Domain Access function **********************************************/
void PWR_BackupAccessCmd(FunctionalState NewState);/* PVD configuration functions ************************************************/
void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel);
void PWR_PVDCmd(FunctionalState NewState);void PWR_WakeUpPinCmd(FunctionalState NewState);/* Main and Backup Regulators configuration functions *************************/
void PWR_BackupRegulatorCmd(FunctionalState NewState);
void PWR_MainRegulatorModeConfig(uint32_t PWR_Regulator_Voltage);
void PWR_OverDriveCmd(FunctionalState NewState);
void PWR_OverDriveSWCmd(FunctionalState NewState);
void PWR_UnderDriveCmd(FunctionalState NewState);/* FLASH Power Down configuration functions ***********************************/
void PWR_FlashPowerDownCmd(FunctionalState NewState);/* Low Power modes configuration functions ************************************/
void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry);
void PWR_EnterUnderDriveSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry);
void PWR_EnterSTANDBYMode(void);/* Flags management functions *************************************************/
FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG);
void PWR_ClearFlag(uint32_t PWR_FLAG);

04. 结构体封装

/** * @brief Power Control*/typedef struct
{__IO uint32_t CR;   /*!< PWR power control register,        Address offset: 0x00 */__IO uint32_t CSR;  /*!< PWR power control/status register, Address offset: 0x04 */
} PWR_TypeDef;

05. 预留

06. 附录

6.1 【STM32】STM32系列教程汇总

网址:【STM32】STM32系列教程汇总

07. 声明

该教程参考了正点原子的《STM32 F4 开发指南》

【STM32】低功耗相关函数和类型相关推荐

  1. 【STM32】RTC相关函数和类型

    00. 目录 文章目录 00. 目录 01. 概述 02. 相关类型 03. 相关函数 04. 结构体封装 05. 预留 06. 附录 07. 声明 01. 概述 RTC相关函数和类型主要在stm32 ...

  2. 【STM32】GPIO相关函数和类型

    00. 目录 文章目录 00. 目录 01. GPIO固件库概述 02. GPIO相关类型 03. GPIO相关宏 04. GPIO相关函数 05. GPIO其它相关 06. 附录 07. 声明 01 ...

  3. STM32低功耗总结——转载

    本文主要解读STM32低功耗模式的机制,并不侧重STM32低功耗的程序实现,而且借助STM32固件库实现STM32低功耗会变的非常简单. 一.STM32芯片性能 使用芯片型号:stm32,CORTEX ...

  4. STM32低功耗模式解读

    本文主要解读STM32低功耗模式的机制,并不侧重STM32低功耗的程序实现,而且借助STM32固件库实现STM32低功耗会变的非常简单. 一.STM32芯片性能 使用芯片型号:stm32f030f4, ...

  5. STM32低功耗模式下GPIO如何配置最节能?

    目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...

  6. 6.stm32 低功耗设计--总结

    一 . 需求分析阶段 1.1 引入 随着近几年电子产品的高速发展,出现了各式各样的便携式产品,他们的发展趋势必将是更小.更轻,功能更强大.那么在产品的开发过程中,需要在满足需求中性能指标后,尽可能的优 ...

  7. STM32低功耗模式与烟雾报警器触发信号电路设计

    STM32低功耗模式与烟雾报警器触发信号电路设计 https://www.cnblogs.com/kanite/p/5352642.html 1.STM32的3种低功耗模式 STM32有3种低功耗模式 ...

  8. STM32 低功耗睡眠模式(SLEEP)事件(EVENT)唤醒实现及优化

    STM32 低功耗睡眠模式(SLEEP)事件(EVENT)唤醒实现及优化 1. 介绍 STM32具有多种低功耗模式,当前以STM32L4系列的低功耗模式最为丰富,此处基于STM32L476和STM32 ...

  9. 【STM32】SPI相关函数和类型

    00. 目录 文章目录 00. 目录 01. SPI简介 02. 相关类型 03. 相关函数 04. 结构体封装 05. 预留 06. 附录 07. 声明 01. SPI简介 SPI 是英语 Seri ...

最新文章

  1. vim编辑器异常退出产生备份文件
  2. StarUML中时序图添加小人
  3. IE8的项目在IE11下 一些功能无法实现的解决方案
  4. 有时间的话一定开办一个C语言视频讲座,希望得到支持。
  5. 用DELPHI的RTTI实现数据集的简单对象化
  6. 『森林火灾检测』基于PaddleX实现森林火灾检测
  7. 使用Selenium和HTML中的动态ID进行Java测试
  8. 广州城市地图为android,广州无障碍地图
  9. oracle 安装乱码,linux安装Oracle中文乱码问题汇总
  10. 【JSP】JSP的运行原理
  11. 《HTML5移动应用开发入门经典》—— 1.6 编写移动网站
  12. javascript使用闭包模拟私有属性和方法
  13. JS 面向对象实例 prototype
  14. 基于JAVA+SpringMVC+Mybatis+MYSQL的实验室设备管理系统
  15. Exchange Server 2016管理系列课件17.创建和使用会议室邮箱
  16. 丢弃法(基于MXNet)
  17. iOS 地图移动中心点获取
  18. 统计当前文件夹下pdf文件的页码总数
  19. CH579 以太网转串口 串口服务器代码
  20. 密码编码学与网络安全(第五版)课后习题-CH03

热门文章

  1. HDU 2115 -I Love This Game
  2. Chrome的一点小问题
  3. linux常用操作命令汇总
  4. 7-5 求前N天 (30 分)
  5. linux mysql设置编码_linux下修改mysql编码
  6. Java黑皮书课后题第5章:**5.37(十进制转二进制)编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值(不要使用Integer.toBinaryString(int)方法)
  7. Java黑皮书课后题第3章:**3.22(几何:点是否在圆内)编写程序,提示用户输入一个点(x,y),然后检查这个点是否在以(0,0)为圆心、半径为10的圆内
  8. 用C++设计一个不能被继承的类
  9. 201671010423 词频统计软件项目报告
  10. Vue子组件与父组件之间的通信