HAL库源码移植与使用之低功耗模式

低功耗特性对用电池供电的产品:     更小电池体积(降低了大小和成本)        延长电池寿命     电磁干扰更小,提高无线通信质量     电源设计更简单,无需过多考虑散热问题

电源供电区分为: 

分为VDD供电区和后备供电区和1.8v供电区

主供电区是外面3.3v直接进来的正极3.3v供电

1.8v供电区是电压调节器把3.3转成1.8v供电

后备供电区是若有主电源则主电源供电,若无主电源则有VBAT备用电源供电

 F7  F4是1.2v供电区而不是1.8v

这跟工艺硬件有关,什么样的电压能让主频稳定且达到168M或其他时钟

低功耗模式特点:

 

相关hal库函数

注:低功耗模式下一定要把systick给关了防止systick把芯片唤醒

void pwr_enter_sleep(void)
{HAL_SuspendTick();  /* 暂停滴答时钟,防止通过滴答时钟中断唤醒 */HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); /* 进入睡眠模式 */
}
void pwr_enter_stop(void)
{sys_stm32_clock_init(200, 2, 2, 4); /* 设置时钟,400Mhz,降频 *//* 当SVOS3进入停止模式时,设置稳压器为低功耗模式,等待中断唤醒 */HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
}

 

//系统进入待机模式
void Sys_Enter_Standby(void)
{__HAL_RCC_APB2_FORCE_RESET();       //复位所有IO口 __HAL_RCC_PWR_CLK_ENABLE();         //使能PWR时钟__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);                  //清除Wake_UP标志HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);           //设置WKUP用于唤醒HAL_PWR_EnterSTANDBYMode();                         //进入待机模式     
}//检测WKUP脚的信号
//返回值1:连续按下3s以上
//      0:错误的触发	
u8 Check_WKUP(void) 
{u8 t=0;	//记录按下的时间LED0=0; //亮灯DS0 while(1){if(WKUP_KD){t++;			//已经按下了 delay_ms(30);if(t>=100)		//按下超过3秒钟{LED0=0;	 	//点亮DS0 return 1; 	//按下3s以上了}}else { LED0=1;return 0; //按下不足3秒}}
}  //外部中断线0中断服务函数
void EXTI0_IRQHandler(void)
{HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
}//中断线0中断处理过程
//此函数会被HAL_GPIO_EXTI_IRQHandler()调用
//GPIO_Pin:引脚
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if(GPIO_Pin==GPIO_PIN_0)//PA0{if(Check_WKUP())//关机{Sys_Enter_Standby();//进入待机模式}}    
}//PA0 WKUP唤醒初始化
void WKUP_Init(void)
{GPIO_InitTypeDef GPIO_Initure;__HAL_RCC_GPIOA_CLK_ENABLE();			//开启GPIOA时钟GPIO_Initure.Pin=GPIO_PIN_0;            //PA0GPIO_Initure.Mode=GPIO_MODE_IT_RISING;  //中断,上升沿GPIO_Initure.Pull=GPIO_PULLDOWN;        //下拉GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;//快速HAL_GPIO_Init(GPIOA,&GPIO_Initure);//检查是否是正常开机if(Check_WKUP()==0){Sys_Enter_Standby();//不是开机,进入待机模式}HAL_NVIC_SetPriority(EXTI0_IRQn,0x02,0x02);//抢占优先级2,子优先级2HAL_NVIC_EnableIRQ(EXTI0_IRQn);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

友思特应用 | 硅片上的光影贴合:UV-LED曝光系统在晶圆边缘曝光中的高效应用

导读 晶圆边缘曝光是帮助减少晶圆涂布过程中多余的光刻胶对电子器件影响的重要步骤。友思特 ALE/1 和 ALE/3 UV-LED 高性能点光源,作为唯一可用于宽带晶圆边缘曝光的 i、h 和 g 线的 LED 解决方案,可高效实现WEE系统设计和曝光需求。 晶圆边缘曝光及处…

分布式相关理论详解

目录 1.绪论 2.什么是分布式系统,和集群的区别 3.CAP理论 3.1 什么是CAP理论 3.2 一致性 3.2.1 计算机的一致性说明 1.事务中的一致性 2.并发场景下的一致性 3.分布式场景下的一致性 3.2.2 一致性分类 3.2.3 强一致性 1.线性一致性 a) 定义 a) Raft算法…

通过ATS软件抓取ios手机日志方法记录

1.ios手机下载描述符文件,用于过检测 下载网址:https://developer.apple.com/bug-reporting/profiles-and-logs/?nameB 点击这个下载,之后在手机通用-VPN与设备管理里面找到刚才下载的描述文件然后安装; 2024.6月后注意会提示描…

springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step

springcloud RocketMQ ,一个mq消息发送后,客户端是怎么一步步拿到消息去消费的?我们要从代码层面探究这个问题。 找的流程图,有待考究。 以下我们开始debug: 拉取数据的线程: PullMessageService.java 本…

Linux构建远程YUM仓库与NFS共享存储服务

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

YOLOX+PyQt5交通路口智能监测平台设计与实现

1.概述 交通要道的路口上人车穿行,特别是上下班早高峰,且时常发生交通事故。因此对交通路口的车流量和人流量的监测必不可少。 2.检测模型 使用的检测模型为YOLOX模型,模型权重为训练VOC数据集得来,其中包括了二十个类别&#…

常用的数据分析方法和工具有哪些?

常用的数据分析方法和工具在多个领域都有广泛的应用,它们帮助人们从复杂的数据中提取有价值的信息和洞察。以下是对常用数据分析方法和工具的详细归纳: 常用的数据分析方法 描述性统计分析: 内容:对数据集的基本统计项进行计算和…

Vue3二次封装axios

官网: https://www.axios-http.cn/docs/interceptors steps1: 安装 npm install axios -ssteps2: /src/api/request.js 文件 >>> 拦截器 import axios from axios // 如果没用element-plus就不引入 import { ElMessage } from element-plusconst service axios.cre…

【阿里云】阿里云产品go sdk封装调用demo

文章目录 代码Reference 代码 产品sdk封装函数: package apsaraimport ("github.com/aliyun/alibaba-cloud-sdk-go/services/ecs""github.com/aliyun/alibaba-cloud-sdk-go/services/nas""github.com/aliyun/alibaba-cloud-sdk-go/servi…

【区块链+绿色低碳】基于区块链的双碳能源纳管平台 | FISCO BCOS应用案例

在双碳战略的指导下,南京区块链产业应用协会牵头研发的双碳能源纳管平台,依托区块链、人工智能、云计算、 物联网、大数据、工业互联网与边缘计算等技术,对绿电追溯、需求侧响应、能源微网、源网荷储、隔墙用电、 碳排放权认证、额度计量、预…

循环队列的实现【C语言】

用数组实现循环队列 题目:622. 设计循环队列 - 力扣(LeetCode) 分析 循环队列,队列满则不能再插入数据,队列为空则不能再出数据。 多开一个空间方便区分队列为空和队列为满的情况。 如果要存K个数据只开K个空间&a…

【在排序数组中查找元素的第一个和最后一个位置】python刷题记录

R2-分治 有点easy的感觉,感觉能用哈希表 class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:nlen(nums)dictdefaultdict(list)#初始赋值哈希表,记录出现次数for num in nums:if not dict[num]:dict[num]1else:dict[…

vue2老项目中node-sass更换dart-sass

更换原因:node-sass经常会出现node版本问题,就很麻烦 卸载项目中的node-sass sass-loader npm uninstall sass-loader sass 安装dart-sas sass-loader 推荐安装sass1.26.2 sass-loader7.3.1 npm install sass-loader7.3.1 sass1.26.2 从新配置vue.…

TRON getAccount 返回参数详解

https://api.shasta.trongrid.io/wallet/getaccount 根据 getAccount 返回结果,这是一个包含了账户详细信息的 JSON 数据。让我们逐个解释每个字段的含义: address:账户地址,即该账户在 TRON 区块链上的唯一标识符。 balance&a…

1.1 openCv -- 介绍

OpenCV(开放源代码计算机视觉库:http://opencv.org)是一个开源库,包含了数百种计算机视觉算法。本文件描述了所谓的OpenCV 2.x API,这是一个本质上基于C++的API,与基于C的OpenCV 1.x API(C API已被弃用,并且自从OpenCV 2.4版本起不再使用“C”编译器进行测试)相对。 …

Django REST Framework(十三)视图集-GenericViewSet

Django REST Framework 中,ModelViewSet 和 ReadOnlyModelViewSet 提供了快速实现常见视图操作的便捷方法。它们分别继承自 GenericViewSet 并组合了多个 Mixin 类,使得视图的编写变得更加简单。 ModelViewSet ModelViewSet 继承自 GenericViewSet&…

Uniswap价格批量查询与ws订阅行情

Uniswap价格批量查询与ws订阅行情 由于 Uniswap V1 版本必须包含 ETH 所以两个 token 之间交换必须先换成 ETH 去中转效率很低已经弃用了 由于 V3 版本 CLMM 和 V4 版本的 DLMM 数学模型过于复杂,还是先从 AMM 模型的 V2 进行入门和学习 Uniswap 三种合约 Unisw…

【C++】C++应用案例-翻转数组

翻转数组,就是要把数组中元素的顺序全部反过来。比如一个数组{1,2,3,4,5,6,7,8},翻转之后就是{8,7,6,5,4,3,2,1}。 (1)另外创建数组,反向填入元素 数组是将元素按照顺序依次存放的,长度固定。所以如果想要…

Python——Pandas(第二讲)

文章目录 变量类型的转换Pandas 支持的数据类型在不同数据类型间转换 建立索引新建数据框时建立索引读入数据时建立索引指定某列为索引列将索引还原变量列 引用和修改索引引用索引修改索引修改索引名修改索引值 更新索引 Series的索引和切片DataFrame的索引和切片选择列按行列索…

基因组挖掘指导天然药物分子的发现-文献精读34

基因组挖掘指导天然药物分子的发现 摘要 天然产物是临床药物的主要来源,也是新药研发过程中先导化合物结构设计和优化的灵感源泉。但传统策略天然药源分子的发现却遭遇了瓶颈,新颖天然产物的数量逐渐无法满足现代药物开发的需求和应对全球多药耐药的威胁…