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、进入低功耗的停止模式后,是不能下载代码的,需要退出该模式后才可以正常烧录代码,否则提示出错

睡眠模式文章

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

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

相关文章

21 | 朝阳医院数据分析

朝阳医院2018年销售数据为例,目的是了解朝阳医院在2018年里的销售情况,通过对朝阳区医院的药品销售数据的分析,了解朝阳医院的患者的月均消费次数,月均消费金额、客单价以及消费趋势、需求量前几位的药品等。 import numpy as np from pandas import Series,DataFrame impo…

Word转PDF工具哪家安全?推荐好用的文件格式转换工具

Word文档是我们最常见也是最常用的办公软件,想必大家都知道了Word操作起来十分的简单,而且功能也是比较齐全的。随着科技的不断进步,如今也是有越来越多类型的办公文档,PDF就是其中之一,那么word转pdf怎么转?Word转PD…

L2CS-Net: 3D gaze estimation

L2CS-Net: Fine-Grained Gaze Estimation in Unconstrained Environments论文解析 摘要1. 简介2. Related Work3. METHOD3.1 Proposed loss function3.2 L2CS-Net 结构3.3 数据集3.4 评价指标 4. 实验4.1 实验结果 论文地址:L2CS-Net: Fine-Grained Gaze Estimation…

日常问题——使用Java转将long类型为date类型,日期是1970年

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 long类型的日期为:1646718195 装换为date类型: Date date new Dat…

ThreadLocal的内存泄漏是怎么发生的

前言 在分析ThreadLocal导致的内存泄露前,需要普及了解一下内存泄露、强引用与弱引用以及GC回收机制,这样才能更好的分析为什么ThreadLocal会导致内存泄露呢?更重要的是知道该如何避免这样情况发生,增强系统的健壮性。 内存泄露 …

STL文件格式详解【3D】

STL(StereoLithography:立体光刻)文件是 3 维表面几何形状的三角形表示。 表面被逻辑地细分或分解为一系列小三角形(面)。 每个面由垂直方向和代表三角形顶点(角)的三个点来描述。 切片算法使用…

MySQL_事务学习笔记

事务 注意:一定要使用 Innodb 存储引擎 概述:一组操作的集合,是不可分割的工作单元,会把一个部分当成一个整体来处理,事务会把操作同时提交或者是撤销。要么同时成功,要么同时失败。 比如:上云…

ESG撑不起波司登的“出海野心”

文 | 螳螂观察 作者 | 青月 ESG(环境、社会和企业治理)这把“火”,烧的是越来越“旺”了。 在“双碳”目标和市场的双重驱动下,各大企业这几年都不约而同的开始关注起ESG,特别是在二级市场上,不少上市公…

竞赛项目 深度学习的水果识别 opencv python

文章目录 0 前言2 开发简介3 识别原理3.1 传统图像识别原理3.2 深度学习水果识别 4 数据集5 部分关键代码5.1 处理训练集的数据结构5.2 模型网络结构5.3 训练模型 6 识别效果7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习…

Die2Die(D2D)和chip2chip(C2C)之间的高速互联接口

随着chiplet的兴起,Die2Die的高速互联越来越重要,相比于传统的C2C(chip2chip)的互联,D2D的片间距离很近(10mm量级),且这些小的chip(裸片)最终形成一个封装【多芯片模块(MCM)】。所以D2D的互联信道短&#x…

什么是Selenium?使用Selenium进行自动化测试

什么是 Selenium?   Selenium 是一种开源工具,用于在 Web 浏览器上执行自动化测试(使用任何 Web 浏览器进行 Web 应用程序测试)。   等等,先别激动,让我再次重申一下,Selenium 仅可以测试We…

如何将视频转换成音频mp3格式?试一下这几种转换方法

MP3格式是一种被广泛使用的音频格式,可以在几乎所有音频播放器和设备上播放。此外,由于视频文件通常包含大量图像信息,因此其文件大小通常比相应的音频文件要大得多。将视频转换为MP3格式音频可以大大减小文件大小,从而节省硬盘空…

深兰科技熊猫汽车牵手首恒出行,人工智能技术提升商用车运营服务

8月8日,深兰科技集团旗下熊猫新能源汽车(上海)有限公司(下称熊猫新能源汽车)与河南首恒出行服务有限公司(下称首恒出行)在深兰科技总部举行签约仪式,首恒出行将向熊猫新能源汽车年定向采购10000台商用车,双方将在汽车后市场领域进行技术合作。…

使用公式与格式控制Excel快速实现计划甘特图

项目中都会遇到做任务计划的需求,有的客户要求需要有甘特图的形式本文介绍如何使用excel 单元格实现甘特图显示,调整任务时间自动填充单元格填色实现甘特图效果。废话不多说,先看效果。 准备工作先创建两列开始时间与完成时间,这…

使用KETTLE工具在Oracle和Dm8之间迁移数据

oracle 代码测试数据 CREATE TABLE PRODUCT_CATEGORY ( PRODUCT_CATEGORYID NUMBER(11,0) NOT NULL , NAME VARCHAR2(255) NOT NULL ENABLE, PRIMARY KEY (PRODUCT_CATEGORYID) )INSERT ALL into PRODUCT_CATEGORY(PRODUCT_CATEGORYID, NAME)VALUES(2,国学) into PRODUCT_CATEG…

uni——不规则tab切换(skew)

案例展示 案例代码 <!-- 切换栏 --> <view class"tabBoxs"><view class"tabBox"><block v-for"(item,index) in tabList" :key"index"><view class"tabItem":class"current item.id&…

华为新版ENSP PRO模拟器测评:性能表现与功能扩展一览

一、引言 在网络领域不断涌现的新技术和复杂的网络拓扑要求&#xff0c;推动了网络设备模拟器的持续发展和创新。华为作为一家领先的通信技术解决方案提供商&#xff0c;不断致力于为网络工程师和技术从业人员提供更优秀的仿真环境。最近&#xff0c;华为推出了ensp pro模拟器的…

Vue+SpringBoot项目开发:后台登陆功能的实现(二)

写在开始:一个搬砖程序员的随缘记录文章目录 一、SpringBoot项目的搭建二、数据库配置1、新建数据库2、新建用户表 三、SpringBoot项目的配置 一、SpringBoot项目的搭建 项目搭建传送门&#xff1a;从零开始&#xff0c;SpringBoot项目快速搭建 二、数据库配置 1、新建数据库…

通过Easy Excel导入数据

目录 &#x1f351;一、背景&#x1f351;二、开发验证&#x1f34a;2.1、引入easyexcel依赖&#x1f34a;2.2、创建表及基础代码&#x1f34a;2.3、处理类及接口&#x1f353;2.3.1、EasyExcel监听处理器&#x1f353;2.3.2、Controller接口&#x1f353;2.3.3、service调用监…

字节跳动推出公共DNS服务,将支持 DoH/DoT/DoQ 等协议

近日&#xff0c;字节跳动旗下的火山引擎正式上线 TrafficRoute 解析调度套件&#xff0c;其实质就是一套“公共 DNS”服务&#xff0c;目前仅支持免费版。该 DNS 后续将提供 DoH、DoT 和 DoQ 加密 DNS 查询协议。 火山引擎公共解析&#xff08;PublicDNS&#xff09;产品介绍&…