Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
STM32超低功耗
STM32超低功耗进阶之电源管理库函数(一)
发布于 2021-05-23 23:15:33 浏览:1567
订阅该版
[tocm] ### 一,电源管理库函数 前面的入门文章对 STM32 的超低功耗的做了使用介绍,当然在使用超低功耗的时候还会考虑 RAM 的数据会不会丢失,什么时候重写 备份寄存器,进入低功耗模式的时候要怎么保持 IO 的状态,本篇文章就带来这些的介绍。 ### 二,电源管理的 API ST 的 HAL 库做了很全面的低功耗相关的 API , 知道这些函数的作用,掌握这些函数的作用,就会对超低功耗有了进一步的认识。 1. 复位电源管理寄存器 `void HAL_PWR_DeInit(void)` 复位电源管理寄存器,将他们设置到默认重置值,复位之后将导致外设无法正常工作。具体的复位值可以在手册上看到。 例如下图:  这里的复位值是 0x0000 0200 也就是 bit9 为 1, 其他位全部为 0.  bit9 的电源范围是 RANGE1 2. 备份域是否可访问 可访问备份域: `void HAL_PWR_EnableBkUpAccess(void)` 使能之后,RTC 寄存器 RTC 备份数据寄存器是可以访问的,也就是可以进行写操作 不可访问备份域: `void HAL_PWR_DisableBkUpAccess(void) ` 关闭之后 备份域的数据将不能够再改变 3. 配置电压检测的阈值 在 STM32L4 系列的 MCU 中支持电压阈值的检测,检测到异常之后会触发一个中断 `PVD_PVM_IRQHandler` , 这个 PVD(Power Voltage Detector) 是可以配置的,配置函数: `HAL_StatusTypeDef HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD)` ``` typedef struct { uint32_t PVDLevel; /*!< PVDLevel: Specifies the PVD detection level. This parameter can be a value of @ref PWR_PVD_detection_level. */ uint32_t Mode; /*!< Mode: Specifies the operating mode for the selected pins. This parameter can be a value of @ref PWR_PVD_Mode. */ }PWR_PVDTypeDef; ``` 通过上面的结构体可以知道,实际上就是配置了 2 个参数。 **PVDLevel** 可以配置的值参考手册:  **mode** 可以配置成 4 种模式: - PVD_MODE_IT : 外部中断 - PVD_MODE_EVT : 内部事件 - PVD_RISING_EDGE : 上升沿触发 - PVD_FALLING_EDGE : 下降沿触发 完成上面的配置之后,还要调用使能的函数之后,以上的配置才会生效: 使能函数:`void HAL_PWR_EnablePVD(void)` 失能函数:`void HAL_PWR_DisablePVD(void)` 4. 唤醒引脚的配置 在 MCU 进入低功耗模式之后可以通过特定的 I/O(唤醒引脚) , 来实现唤醒 MCU,这些引脚是固定不可复用。 这些引脚只有在使能之后才能有唤醒 MCU 的能力。 使能唤醒引脚:`void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity)` 可设置的值如下: ``` #define PWR_WAKEUP_PIN1_HIGH PWR_CR3_EWUP1 /*!< Wakeup pin 1 (with high level polarity) */ #define PWR_WAKEUP_PIN2_HIGH PWR_CR3_EWUP2 /*!< Wakeup pin 2 (with high level polarity) */ #define PWR_WAKEUP_PIN3_HIGH PWR_CR3_EWUP3 /*!< Wakeup pin 3 (with high level polarity) */ #define PWR_WAKEUP_PIN4_HIGH PWR_CR3_EWUP4 /*!< Wakeup pin 4 (with high level polarity) */ #define PWR_WAKEUP_PIN5_HIGH PWR_CR3_EWUP5 /*!< Wakeup pin 5 (with high level polarity) */ #define PWR_WAKEUP_PIN1_LOW (uint32_t)((PWR_CR4_WP1<
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
whj467467222
开源,分享,交流,共同进步
文章
32
回答
1222
被采纳
149
关注TA
发私信
相关文章
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
10
个答案
3
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
lizimu
2
篇文章
9
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部