MCU学习笔记_PWR电源管理系统

2023-11-07

MCU学习笔记

电源管理系统

1. STM32电源监控器概述
2. STM32电源
3. HAL库配置PVD实例

1. STM32电源监控器概述

  • 原因
  1. 保持系统正常运行
  2. 实现特定条件下的低功耗模式
  • 上电复位(POR)/掉电复位(PDR)

    上电复位是指上电压从无到有在RESET处会先处于高电平一段时间,然后由于该点通过电阻接地,则RESET该点的电平会逐渐的改变为低电平,从而使得单片机复位口电平从1转到0,达到给单片机复位功能的一种复位方式。
    当VDD/VDDA低于指定阈值VPDR/VPOR时,器件无需外部复位,便会保持复位状态。VPDR/VPOR针对于芯片基本上是固定的在这里插入图片描述
    VDD: 0~VPOR(典型值1.72V):上电复位
    VDD持续上升时间:
    正常运行状态:
    下降至VPDR:掉电复位

  • 欠压复位(BOR)

    单片机的“电量不足”是电源电压不足或暂时降低,低于可靠运行所需的水平。许多单片机具有保护电路,该电路可检测电源电压何时低于此水平,并将设备置于复位状态,以确保在电源恢复时正确启动。此操作也称为“欠压复位”,英文缩写为“BOR”。

    上电期间,欠压复位(BOR)将使期间保持复位状态,直到电源电压达到指定的VBOR阈值。VBOR通过器件选项字节进行配置。BOR默认关闭,当VDD降低至所选VBOR时,使器件复位。
    配置BOR选项级别:通过flash选项控制寄存器(FLASH_OPTCR)
    BOR_LEV=11: BOR关闭(VBOR0):1.8V到2.1V电压范围复位阈值级别。
    BOR_LEV=10: BOR级别1(VBOR1):2.1V到2.4V电压范围复位阈值级别。
    BOR_LEV=01: BOR级别2(VBOR2):2.4V到2.7V电压范围复位阈值级别。
    BOR_LEV=00: BOR级别3(VBOR3):2.7V到3.6V电压范围复位阈值级别。
    在这里插入图片描述在这里插入图片描述

  • 可编程电压监控器(PVD)
    用来监控电源电压。监控电源电压与所设置的阈值相比较大小,比较的结果会产生一个事件,该事件连接到内部EXTI线16,通过EXTI寄存器使能,如果VDD降至PVD阈值以下或升至阈值以上,则可以产生PVD中断(取决于EXTI线16上升沿/下降沿配置)。

    作用:用于在中断服务程序中执行紧急关闭系统的任务

    使能PVD:PWR_CR.PVDE位

    阈值选择:PWR_CR.PLS[2:0]位

    在这里插入图片描述
    阈值比较结果:PWR_CSR.PVDO位

  • HAL库操作函数

//配置PVD参数:阈值级别和中断触发方式
void HAL_PWR_ConfigPVD(PWR_PVDTypeDef*sConfigPVD);
//使能PVD
void HAL_PWR_EnablePVD(void);
//失能PVD
void HAL_PWR_DisablePVD(void);
//中断服务函数
void HAL_PWR_PVD_IRQHandler(void);
//中断回调函数
void HAL_PWR_PVD_Callback(void);

2. STM32电源
在这里插入图片描述

  • 电池备份域
    VBAT: 后备电池,用于在电源断电后,给唤醒逻辑电路,备份寄存器,备份RAM,LSE电路供电。在这里插入图片描述
  • 调压器
    控制低功耗,用于为备份域以及待机电路以外的所有数字电路供电,如IO口,内核逻辑电路,CPU,数字外设RAM,FLASH等。 输出电压为1.2V或1.8V。
    工作模式
    1. 正常运行:1.2/1.8V域全功率运行;
    2. 停止模式:1.2/1.8V域低功率运行;1.2V域所有时钟关闭,相应外设停止工作,保留内核寄存器以及SRAM内容;
    3. 待机模式:1.2/1.8V域断电;内核寄存器以及SRAM内容的内容全部丢失,备份区域的寄存器以及SRAM不收影响。
  • 独立A/D转换器电源以及参考电压
    ADC的独立电源(VDDA, VSSA引脚),用于提高转换精度,可以单独滤波并屏蔽PCB上的噪音。

3. HAL库配置PVD实例

#include "exti.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "exti.h"

PVDTypeDef pvd_config;

void PVD_Config(void)
{
/*********************************
//使能PWR时钟
*********************************/
__HAL_RCC_PWR_CLK_ENABLE(); 

/*********************************
//配置PVD参数:阈值级别和中断触发方式
*********************************/
pvd_config.PVDLevel=PWR_PVDLEVEL_7;//2.9v
pvd_config.PVDMode=PWR_PVD_MODE_IT_RISING_FALLING;
 HAL_PWR_ConfigPVD(&pvd_config);
 
/*********************************
 //使能PVD
*********************************/
 HAL_PWR_EnablePVD();
 
/*********************************
设置后中断优先级
*********************************/
HAL_NVIC_EnableIRQ(PVD_IRQn); //
HAL_NVIC_SetPriority(PVD_IRQn,0,0);//
}

/*********************************
//中断服务函数
*********************************/
void PVD_IRQHandler(void)
{
	HAL_PWR_PVD_IRQHandler();
}

/*********************************
//中断回调函数
*********************************/
void HAL_PWR_PVD_Callback(void)
{
	LED=0;
	LED=1;
}

/*********************************
主函数
*********************************/

int main(void)
{
	HAL_Int();//初始化HAL库
	Stm32_Clocu_Init(360,25,2,8);//设置时钟
	delay_init(180);//初始化延时
	uart_int(115200);//初始化USART
	LED_Init();//初始化LED
	
	PVD_Config();
	while(1)
	{

	}
}

参考资料:正点原子视频 Thanks^^

【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MCU学习笔记_PWR电源管理系统 的相关文章

  • 读写一致 && MySQL&&Redis

    存储一致性 CPU存储 L1L2Cache等等 不懂CPU如何读写内存还敢说自己是程序员 知乎 zhihu com 基础知识 1 什么是cache line cache line 位于 CPU 与内存之间 CPU想要获得数据的时候 先从CP
  • Typora+PicGo+Alist 私人图床教程

    前置资源 已安装好typora 直接官网下载即可 Typora 官方中文站 typoraio cn 安装好PicGo 稳定版优先 推荐稳定版2 3 1 PicGo 腾讯云COS 下载链接 下载速度快 https picgo 12517503
  • 人民币兑换python

    输入一个人民币的整数值 100以内以元为单位 编程找到用10元 5元 2元 1元表示的总数量的最小组合方式 输入形式 从控制台输入一个整数值 表示以元为单位的人民币币值 输出形式 向控制台输出四个整数 以空格分隔 分别表示兑换成的10元 5
  • linux安装minio以及springboot整合使用

    文章目录 1 linux安装minio 2 springboot整合minio使用 1 linux安装minio 1 新建文件夹 mkdir home minio 数据文件夹 mkdir home minio data 创建日志文件夹 mk
  • python-selenium-pytest-allure UI自动化测试

    一 下载及安装插件 python selenium pytest allure 辅助 pyautoit pymysql 二 代码框架 1 基础文件 main py if name main pytest main alluredir all

随机推荐

  • 台式电脑没鼠标怎么移动光标_台式电脑没有鼠标怎么操作电脑

    没鼠标只能靠键盘操作了 以下都是键盘快捷键命令F6 选择操作区域光标键 选择目标backspac 退回上一级目录enter 进入 运行 table 项目选择单独按Windows 显示或隐藏 开始 功能表Windows BREAK 显示 系统
  • gettimeofday windows上的实现

    gettimeofday是Linux上的函数 在windows的实现 这里直接转doubango工程中的tsk time c 源文件种的实现 可以参考 include tsk time h include tsk debug h if TS
  • CodeBlocks新手安装以及汉化(20,03版本)

    CodeBlocks 20 03安装以及汉化设置 CodeBlocks官网 https www codeblocks org downloads binaries CodeBlocks 20 03安装包及汉化包下载 链接 https pan
  • 利用python实现简易版的贪吃蛇游戏(面向python小白)

    本文来源于公众号 csdn2299 喜欢可以关注公众号 程序员学府 引言 作为python 小白 总是觉得自己要做好百分之二百的准备 才能开始写程序 以至于常常整天在那看各种语法教程 学了几个月还是只会print hello world 这
  • 线性回归算法

    一 监督学习完整流程 房价预测为例 给出正确答案 根据我们的数据来说房子实际的价格是多少 回归问题 根据之前的数据预测出一个准确的输出值 另一种监督学习流程 分类问题 寻找癌症肿瘤问题 当我们想要预测离散的输出值 例如寻找癌症肿瘤并想要确认
  • 新安装的IDEA 2019.2---没法启动 Start Failed

    Internal error Please report to http jb gg ide critical startup errors com intellij ide plugins MainRunner StartupAborte
  • 数学基础(一)矩阵对角化、SVD分解以及应用

    目录 一 矩阵 1 矩阵的性质 2 单位矩阵和逆矩阵 3 矩阵的对角化 二 矩阵的SVD分解 三 SVD的应用 一 矩阵 1 矩阵的性质 下面列出了矩阵的一些性质 A表示一个p m的矩阵 B C表示一个m n的矩阵 最后一条比较常用 由于x
  • Python编程基础题(18-求平均值)

    Description 本题的基本要求非常简单 给定 N 个实数 计算它们的平均值 但复杂的是有些输入数据可能是非法的 一个 合法 的输入是 1000 1000 区间内的实数 并且最多精确到小数点后 2 位 当你计算平均值的时候 不能把那些
  • TS实现排序算法之选择排序

    选择排序算法 每次从待排序序列中找出最大值或最小值 查找过程重复 n 1 次 对于每次找到的最大值或最小值 通过交换元素位置的方式将它们放置到适当的位置 最终使整个序列变成有序序列 升序排列时 每次查找待排序序列中的最小值的位置 然后交换位
  • MQTT协议详解及v5.0实践——实践类

    本文主要包含了以下内容 1 MQTT协议演进历史及协议特点 总结和分析MQTT协议族的优缺点 分析和总结了为什么相比于其他协议 MQTT适合IoT 业内支持现状等 2 阿里云IoT MQTT3和5协议在实践中的一些关键设计及思考 包括连接复
  • LMS自适应滤波算法

    LMS自适应滤波算法 一 随机过程的简介 1 广义平稳 WSS 过程需要满足的两个条件 WSS过程的自相关函数具有的性质 MATLAB中的互相关函数xcorr 二 自适应滤波器 1 简介 自适应FIR滤波器 2 性能函数 基于平均误差 MS
  • react取消捕获_React 阻止默认事件和阻止冒泡

    首先有这样一段代码 很久很久以前有这样一个故事 这要从远古时代说起 fn和fn1是一对父子 div是parent span是children fn是子 fn1是父 最近在学react 首先 fn ev alert children fn1
  • (十七)DAC转换实验

    上一节我们写了关于ADC的相关内容 这一节我们就要写有关于DAC的相关内容 DAC即是将数字信号转换为模拟信号 它的功能与ADC相反 我们这节通过输出数字信号转换为模拟信号实现led灯先逐渐变亮再逐渐变暗来实现相应的功能 关于DAC 我们知
  • 通过SSID,密码,和连接类型来连接WiFi,并保存配置

    public class MainActivity extends Activity WifiManager mWifiManager Override protected void onCreate Bundle savedInstanc
  • Android 模拟返回键、菜单键、主页键

    发送命令模拟按键操作 方法一 用Runtime模拟按键操作 param keyCode 按键事件 KeyEvent 的按键值 private void sendKeyCode1 int keyCode try String keyComma
  • python实现ip地址查询

    encoding utf8 根据ip地址查询出IP所在的地理位置 import requests def get ip info ip r requests get http ip taobao com service getIpInfo
  • websocket简单使用

    简单实现 参考 https websockets readthedoc PS 此文章只限于python版本大于3 6 前期准备 pip install websocket server端 import asyncio import webs
  • 怎么插入svg_公众号文章SVG使用教程分享

    嘿 胖友们大家好呀 我是三儿 每天 困扰在我们新时代新媒体人面前的 不是今天不知道该写啥 也不是粉丝咋又掉了 而是 今天中午吃啥 每天一到饭点 公司的外卖群里就开始了灵魂质问 今天吃啥 这个时候 就轮到貌美如花的小三儿出场了 先来看看三儿是
  • 小程序用户隐私保护指引设置填写指南(小程序隐私保护说明如何填写)

    小程序隐私保护指引完整填写范本 小程序隐私保护说明如何填写 小程序用户隐私保护指南填写指南仅供参考 为了区分用户 开发者在征得你明确同意后 会收集你的微信昵称和头像 为了显示距离 开发商在征得你的明确同意后 会收集你的位置信息 对于用户互动
  • MCU学习笔记_PWR电源管理系统

    MCU学习笔记 电源管理系统 1 STM32电源监控器概述 2 STM32电源 3 HAL库配置PVD实例 1 STM32电源监控器概述 原因 保持系统正常运行 实现特定条件下的低功耗模式 上电复位 POR 掉电复位 PDR 上电复位是指上