STM32 低功耗-停止模式
STM32 停止模式
文章目录
- STM32 停止模式
- 第1章 低功耗模式简介
- 第2章 停止模式简介
- 2.1 进入停止模式
- 2.1 退出停止模式
- 第3章 停止模式程序部分
- 总结
第1章 低功耗模式简介
在 STM32 的正常工作中,具有四种工作模式:运行、睡眠、停止以及待机模式。
在系统或电源复位以后,微控制器处于运行状态,当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗。这些低功耗模式电源消耗不同、唤醒时间不同和唤醒源不同。
例如等待某个外部事件时,用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,所以需要根据自身的需要选定一个最佳的低功耗模式。
STM32F1有三种低功耗模式:
1、 睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行)。
2、 停止模式(所有的时钟都已停止)。
3、 待机模式(1.8V电源关闭)。
各种低功耗模式的对比如下表:

说明:
WFI和WFE都是系统指令,WFI是表示中断,WFE表示事件。
第2章 停止模式简介
在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。
停止模式是在Cortex™-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和HSE RC振荡器的功能被禁止,所有外设停止工作。由于VDD电源没有关闭,所以SRAM和寄存器内容被保留下来。等待重新开启时钟就可以从上次停止的地方继续执行程序。
2.1 进入停止模式
在停止模式下,通过设置电源控制寄存器(PWR_CR)的LPDS位使内部调节器进入低功耗模式,能够降低更多的功耗。
如果正在进行闪存编程,直到对内存访问完成,系统才进入停止模式。
如果正在进行对APB的访问,直到对APB访问完成,系统才进入停止模式。可以通过对独立的控制位进行编程,可选择以下功能:
1、 独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。详见17.3节。
2、 实时时钟(RTC):通过备份域控制寄存器 (RCC_BDCR)的RTCEN位来设置。
3、 内部RC振荡器(LSI RC):通过控制/状态寄存器 (RCC_CSR)的LSION位来设置。
4、 外部32.768kHz振荡器(LSE):通过备份域控制寄存器 (RCC_BDCR)的LSEON位设置。在停止模式下,如果在进入该模式前ADC和DAC没有被关闭,那么这些外设仍然消耗电流。通过设置寄存器ADC_CR2的ADON位和寄存器DAC_CR的ENx位为0可关闭这2个外设。
2.1 退出停止模式
当一个中断或唤醒事件导致退出停止模式时,HSI RC振荡器被选为系统时钟。此时,需要手动配置系统时钟为HSE和滴答定时器的时钟源为8分频,否则系统执行的时钟就不正确,即会导致和进入停止模式前的时钟不同步了。
当电压调节器处于低功耗模式下,当系统从停止模式退出时,将会有一段额外的启动延时。如果在停止模式期间保持内部调节器开启,则退出启动时间会缩短,但相应的功耗会增加。
如何进入和退出停止模式,细节参考如下表:

第3章 停止模式程序部分
示例代码如下:
main.cwhile(1)
{if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_3) == 0){LED1 = 0;RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);SetSysClock();/* 退出后重新设置系统时钟 */SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);LED1 = 1;}
}
SetSysClock()函数
该函数在system_stm32f10x.c文件中,由于这个函数被定义为static了,所以main里面无法直接被调用。
因此,需要重新拷贝这个函数到自己的c文件里面,名字可以改也可以默认,和系统的静态函数使用不冲突的。
**特别提醒:不建议去修改系统里面的系统代码,如果稍有不慎就会导致系统执行出错,所以才需要自定义函数来实现。**

中断唤醒代码部分(略)
和前面退出睡眠模式的代码一样,可以移步到睡眠模式文章参考即可。
总结
停止模式在睡眠模式基础上更加节省功耗,其它的基本差不多。
编程时需要注意以下几点:
1、退出停止模式后需要重新配置系统时钟为外部高速时钟和滴答定时器时钟分频等。
2、不建议为了实现某种功能而去修改系统里面提供的接口代码,如果稍有不慎就会导致系统执行出错。
3、进入睡眠模式可选PWR_Regulator_ON和PWR_Regulator_LowPower模式,虽然两者都可以进入,但如果要达到更低功耗,则需要选后者的模式。
4、进入低功耗的停止模式后,是不能下载代码的,需要退出该模式后才可以正常烧录代码,否则提示出错。
睡眠模式文章
相关文章:
STM32 低功耗-停止模式
STM32 停止模式 文章目录 STM32 停止模式第1章 低功耗模式简介第2章 停止模式简介2.1 进入停止模式2.1 退出停止模式 第3章 停止模式程序部分总结 第1章 低功耗模式简介 在 STM32 的正常工作中,具有四种工作模式:运行、睡眠、停止以及待机模式。 在系统…...
Hutool中 常用的工具类和方法
文章目录 日期时间工具类 DateUtil日期时间对象-DateTime类型转换工具类 Convert字符串工具类 StrUtil数字处理工具类 NumberUtilJavaBean的工具类 BeanUtil集合操作的工具类 CollUtilMap操作工具类 MapUtil数组工具-ArrayUtil唯一ID工具-IdUtilIO工具类-IoUtil加密解密工具类 …...
K8s(健康检查+滚动更新+优雅停机+弹性伸缩+Prometheus监控+配置分离)
前言 快速配置请直接跳转至汇总配置 K8s SpringBoot实现零宕机发布:健康检查滚动更新优雅停机弹性伸缩Prometheus监控配置分离(镜像复用) 配置 健康检查 健康检查类型:就绪探针(readiness) 存活探针&am…...
Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查
Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查 数据库操作 MySQL数据库pymysql Django开发操作数据库更简单,内部提供了ORM框架。 安装第三方模块 pip install mysqlclientORM可以做的事: 1、创建、修改、删除数据库中的…...
React Hooks 中的 useEffect(副作用)
useEffect 是什么? useEffect 是一个 React Hook,它允许你将组件与外部系统同步 当我们在 React 中使用 useEffect 这个 Hook 时,实际上是在告诉 React 在特定情况下执行我们定义的副作用函数。这种副作用函数可以处理一些与组件渲染结果无关…...
[CKA]考试之持久化存储卷PersistentVolume
由于最新的CKA考试改版,不允许存储书签,本博客致力怎么一步步从官网把答案找到,如何修改把题做对,下面开始我们的 CKA之旅 题目为: Task 创建一个pv,名字为app-config,大小为2Gi,…...
基于LLM的SQL应用程序开发实战(一)
基于LLM的SQL应用程序开发实战(一) 16.1 SQL on LLMs应用程序初始化 本节主要从案例代码的角度切入,探索ChatGPT以及大模型,尤其是从生产环境的视角,来思考具体的最佳实践。本节主要跟大家谈的是,在LangChain这样一个框架下,我们使用GPT-3.5或者GPT-4大模型,同时使用第…...
如何批量实现多行合并后居中
思路: 1.先填充数据 2.数据分类统计制作格式 3.格式刷刷制作出的格式 1.填充数据 思路:选中,F5定位空值,,⬆(键盘上的上下左右哪里的上键),按住Ctrl然后按Enter。 2.数据分类统计…...
【深度学习_TensorFlow】手写数字识别
写在前面 到这里为止,我们已经学习完张量的常用操作方法,已具备实现大部分神经网络技术的基础储备了。这一章节我们将开启神经网络的学习,然而并不需要像学习前面那样了解大量的张量操作,而是将重点转向理解概念知识,…...
antv/l7地图,鼠标滚动,页面正常滑动-- 我们忽略的deltaY
背景 在官网项目中,需要使用一个地图,展示产品的分布区域及数量。希望的交互是,鼠标放上标点,tooltip展示地点和数量等信息。鼠标滚动,则页面随着滚动。但是鼠标事件是被地图代理了的,鼠标滚动意味着地图的…...
再续AM335x经典,米尔TI AM62x核心板上市,赋能新一代HMI
近十年来,AM335x芯片作为TI经典工业MPU产品,在工业处理器市场占据主流地位,其凭借GPMC高速并口、PRU协处理器等个性化硬件资源,在工业控制、能源电力、轨道交通、智慧医疗等领域广受用户欢迎。随着信息技术的快速发展,…...
springboot和Django哪一个做web服务器框架更好
目录 一、两者特点 二、各自优势 一、两者特点 编程语言: Spring Boot:使用 Java 编程语言。Django:使用 Python 编程语言。 生态系统和社区支持: Spring Boot:具有庞大的 Java 生态系统和强大的社区支持。适用于大型…...
C#核心知识回顾——21.归并排序
理解递归逻辑 一开始不会执行sort函数的 要先找到最小容量数组时 才会回头递归调用Sort进行排序 基本原理 归并 递归 合并 数组分左右 左右元素相比较 一侧用完放对面 不停放入新数组 递归不停分 分…...
基于netty的rpc远程调用
QPRC 🚀🚀🚀这是一个手写RPC项目,用于实现远程过程调用(RPC)通信🚀🚀🚀 欢迎star串门:https://github.com/red-velet/ 🚀Q-PRC 一、功能特性 …...
RabbitMQ输出日志配置
参考地址rabbitmq启用日志功能记录消息队列收发情况_rabbitmq开启日志_普通网友的博客-CSDN博客 启用日志插件命令 # 设置用户权限 rabbitmqctl set_user_tags mqtt-user administrator rabbitmqctl set_permissions -p / mqtt-user ".*" ".*" ".*&…...
解决一个Sqoop抽数慢的问题,yarn的ATSv2嵌入式HBASE崩溃引起
新搭建的一个Hadoop环境,用Sqoop批量抽数的时候发现特别慢,我们正常情况下是一个表一分钟左右,批量抽十几个表,也就是10分钟的样子,结果发现用了2个小时: 查看yarn日志 发现有如下情况: 主要有两…...
为Android构建现代应用——应用导航设计
在前一章节的实现中,Skeleton: Main structure,我们留下了几个 Jetpack 架构组件,这些组件将在本章中使用,例如 Composables、ViewModels、Navigation 和 Hilt。此外,我们还通过 Scaffold 集成了 TopAppBar 和 BottomA…...
聊聊 Docker 和 Dockerfile
目录 一、前言 二、了解Dockerfile 三、Dockerfile 指令 四、多阶段构建 五、Dockerfile 高级用法 六、小结 一、前言 对于开发人员来说,会Docker而不知道Dockerfile等于不会Docker,上一篇文章带大家学习了Docker的基本使用方法:《一文…...
element表格+表单+表单验证结合u
一、结果展示 1、图片 2、描述 table中放form表单,放输入框或下拉框或多选框等; 点击添加按钮,首先验证表单,如果存在没填的就验证提醒,都填了就向下添加一行表单表格; 点击当前行删除按钮,…...
数据库:MYSQL参数max_allowed_packet 介绍
1、参数作用 max_allowed_packet参数是指mysql服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小。如果超过了设置的最大长度,则会数据库保持数据失败。 2、问题场景 ● 有时候业务的需要,可能会存在某些字段数据长度非常大(比如富文本编辑器里面的内容),…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
