关于STM32的电源管理

发布者:532829319hmk最新更新时间:2022-04-24 来源: eefocus关键字:STM32  电源管理  电源监控器 手机看文章 扫描二维码
随时随地手机看文章

一、电源监控器

stm32芯片主要通过引脚VDD从外部获取电源,在它的内部有电源监控器,用于检测VDD的电压,以实现复位功能和紧急掉电处理,来保持系统可靠地运行。


1、上电复位(POR)与掉电复位(PDR)

当检测到VDD的电压低于阈值VPOR及VPDR时,无需外部电路辅助,STM32芯片会自动保持在复位状态,防止电压不住强行工作带来的不良后果。刚开始VDD电压低于VPOR(约1.92v)时,STM32处于上电复位状态,当电压持续上升到大于VPOR时,芯片开始正常运行。当检测到电压低于VPDR(约1.88v)阈值时,STM32处于掉电复位状态。


2、可编程电压检测器PVD

除了POR和PDR防止误操作。STM32还提供了可编程电压检测器PVD,当检测到VDD的电压低于编程的VPVD阈值时,会向内核产生一个PVD中断,以使内核在复位前进行紧急处理.该电压阈值可通过电源控制寄存器PWR_CSRd置。


3、电源系统

电源系统的主要分为备份域电路、内核电路和ADC电路3部分。


①备份域电路


STM32的LSE震荡器、RTC和备份寄存器被包含在备份域电路中。通过VBAT引脚获取供电电源


②内核电路(也叫调压器供电电路,即1.8V区域)


为备份域和待机电路以外的所有数字电路供电。包括内核数字外设和RAM。调压器可以运行在运行模式、停止模式和待机模式。


③ADC电路


为了提高ADC的转换精度,STM32为ADC配了独立的电源接口,方便进行单独的滤波。


二、STM32的功耗模式

按功耗由高到低排序,STM32有运行、睡眠、停止、待机4种工作模式。上电复位后STM32处于运行状态,当内核不需要运行时可选择后面三种低功耗模式,以降低功率。这三种模式中,电源消耗不同,唤醒时间不同,唤醒源不同。


1.睡眠模式


仅关闭了内核,片上外设及M3外设都在运行。有两种方式进入睡眠模式,WFI和WFE,他的进入方式决定了唤醒方式。由WFI进入的由中断唤醒,执行完中断函数后继续从WFI后面运行。由WFE进入的则由事件唤醒。唤醒后直接执行WFE后的程序。


                LED_Init();

Key_GPIO_Init();

LED(0);

__WFI();//进入睡眠模式

//等待KEY1按下产生中断唤醒

//唤醒后接着向下执行

LED(3);

delayms(1000);

LED(4);

delayms(1000);

LED(5);

2.停止模式


在停止模式中进一步关闭了其他时钟,故在停止模式下所有的外设也停止工作。但由于1.8V区域电源没关闭,寄存器和内存的信息还在所以停止模式结束后还是可以接着进入停止模式的地方接着向下执行代码。


                LED_Init();

Key_GPIO_Init();

LED(0);

//进入停止模式

PWR_EnterSleepMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);

//被唤醒后接着向下执行

//从停止模式被唤醒后使用的是HSI时钟,这里重启HSE时钟,使用PLLCLK

SYSCLK_Config_STOP();

LED(1);

delayms(500);

LED(2);

delayms(500);

LED(3);

3.待机模式


待机模式关闭了所有的时钟,故待机结束后只能重新开始运行程序。注意要进入待机模式前必须使能PWR时钟。


int main()

{

//使能电源管理的时钟,必须要使能时钟才能进入待机模式

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);

while(1)

{

LED_Init();

Key_GPIO_Init();

LED(0);

LED(1);

delayms(500);

LED(2);

delayms(500);

LED(3);

delayms(500);

while(1)

{

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==0)

{

LED(8);

delayms(500);

PWR_ClearFlag(PWR_FLAG_WU);

PWR_WakeUpPinCmd(PWR_WakeUpPin_1,ENABLE);

/*进入待机模式*/

PWR_EnterSTANDBYMode();

}

}

}

}


关键字:STM32  电源管理  电源监控器 引用地址:关于STM32的电源管理

上一篇:NVIC寄存器组中的中断挂起SETPEND与消除CLRPEND,与外部中断挂起寄存器EXTI_PR
下一篇:STM32 在 keil 环境下如何使用 cm_backtrace进行错误追踪

推荐阅读最新更新时间:2024-11-11 12:16

STM32 串口的简单配置
配置串口包括三部分内容: 1. I/O口配置:TXD配置为复用推挽输出(GPIO_Mode_AF_PP),RXD配置为浮空输入 (GPIO_Mode_IN_FLOATING); 2. 串口配置:波特率等; 3. 中断向量配置:一般用中断方式接收数据。 注意事项: 1. USART1是挂在APB2,使能时钟命令为: RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE ); 其他几个则挂在APB1上,如2口: RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE ); 2. 配置4口和5口的时候,中断名为UART4、UART
[单片机]
CAN总线学习笔记|STM32的CAN环回测试
CAN基础知识介绍文中介绍了CAN协议的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,来实现CAN通讯的环回测试 1. STM32CubeMX配置 CAN是挂载在APB1总线上,设置PCLK1时钟频率到最大45MHz 激活CAN1,配置位时序参数,其他基本参数以及工作模式(此处设置为Loopback环回模式) CAN波特率的计算公式:只需要知道BS1和BS2的设置,以及APB1的时钟频率,就可以方便的计算出波特率。比如设置TS1=8、TS2=6和BRP=6,在APB1频率为45Mhz的条件下,即可得到CAN通信的波特率=45000/6/(8+6+1)=
[单片机]
CAN总线学习笔记|<font color='red'>STM32</font>的CAN环回测试
STM32的ADC编程方法总结
这里的ADC转换也来使用DMA---这个也是STM32的ADC转换最常见的方式。 第一步是了解STM32的ADC对应的GPIO口如下图不用记住,可以查询,我是将它剪下来粘贴到书本的相应章节! 第二步是配置相应ADC转换的GPIO口这里使用PC0--PC1 static void ADC1_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //打开DMA1的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 “ RCC_APB
[单片机]
stm32输入捕获,捕获高电平
输入捕获就是用定时器检测引脚上的电平时间,可以检测高电平时间和低电平时间,然后可以算引脚上信号的频率和占空比。 基本思路就是利用定时器的输入捕获功能。 定时器捕获到高电平或低电平就会进入捕获中断 例如: 我们要捕获高电平时间 0 设置定时器计数频率和装载值,一般设置1MHz,65535 1 设置定时器捕获为高电平捕获 2 进入捕获中断后,获取CNT计数值或CCRx值,定时器捕获到电平后会把CNT的值保存到CCRx。 设置成低电平捕获。 3 再次进入捕获中断,获取CNT计数值-上次的CNT值=总高电平时间。 设置成高电平捕获。 4 重复2-3即可完成下一次捕获。当然还要考虑溢出的情况,
[单片机]
<font color='red'>stm32</font>输入捕获,捕获高电平
STM32学习之Flash(主存储块、系统存储器和选项字节)详解
说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装 芯片 配置、芯片ID、自举程序等等。当然, FLASH还可以用来装数据。 自己收集了一些资料,现将这些资料总结了一下,不想看的可以直接调到后面看怎么操作就可以了。 FLASH分类 根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。 主存储块用于存储程序,我们写的程序一般存储在这里。 信息块又分成两部分:系统存储器、选项字节。 系统存储器存储用于存放在系统存储器自举模式下的启动程序(BootLoader),当使用ISP方式加载程序时,就是由这个程序执行。这个区域由芯片厂写入BootLoa
[单片机]
STM32固件库学习(1)
一、为什么要学习stm32固件库 使用寄存器编程费时、费力、程序移植性差且容易出错。 st公司考虑到上述缺点故推出一套便于编程的API。 stm32固件库的开发的本质是API函数的使用。 举例:使用GPIO点亮一个LED灯(GPIO控制输出一个低电平) 使用寄存器 先要查找所需的寄存器哪一位是控制那个引脚。那个寄存器控制它的输出等。比较费劲。 使用stm32固件库 stm32固件库提供的API函数,有对GPIO的操作。通过此函数实现对GPIO的控制。 此函数就是对GPIO的相关寄存器操作的封装。 二、CMSIS标准 CMSIS(Cortex Microcontroller saftware Interfac
[单片机]
<font color='red'>STM32</font>固件库学习(1)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved