STM32睡眠、停机、待机说明

这篇具有很好参考价值的文章主要介绍了STM32睡眠、停机、待机说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

stm32有三种低功耗模式,功耗依次降低:

    睡眠模式(sleep mode),停止模式(stop mode),待机模式(standby mode),三种模式概述如下

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

1)stm32的低功耗模式简介

睡眠模式:只有内核时钟关闭,外设仍在运行;可以通过任意一个中断或唤醒事件唤醒;唤醒后回到睡眠的位置向后执行。

停止模式:关闭内核时钟、外设时钟,保留内核1.8V供电,寄存器和RAM中的数据可以保持,IO口状态也可保持;可以通过任意一个外部中断唤醒;唤醒后可回到停止的代码处向后执行,但要重新初始化时钟和外设。

待机模式:关闭所有时钟,关闭内核1.8V供电,寄存器和RAM数据不能保持(除了电源控制/状态寄存器(PWR_CSR)、备份寄存器,其他数据都丢失);可通过唤醒引脚(PA0)上升沿、RTC闹钟中断,或者复位唤醒;唤醒后相当于复位,从复位地址开始执行。

三种模式的特性汇总如下表:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

当stm32执行WFI(等待中断)或WFE(等待事件)指令后,即进入低功耗模式,这是两条汇编指令,实际使用时,HAL库已经为我们封装好了函数,只需要调用相应的C语言函数即可。

2)低功耗模式的使用

我们仍然以串口的工程为基础,在它上面添加设置,如下图,先设置外部中断:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

再设置RTC:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

注意添加的有:

RTC中,勾选active clock source、勾选active calendar;

勾选RTC alarm interrupt through EXTI line 17中断,这里注意一下,有的cubemx版本起初这个RTC alarm中断显示不出来,需要选一下上面的RTC OUT,选为输出,然后这个中断就显示出来了,之后再选择为无输出也还在;

选上PA0为唤醒引脚、PA1为外部中断1。

低功耗模式本身不需要特殊设置,生成HAL库工程文件时都会自带;这里选上RTC alarm中断、唤醒引脚、外部中断1,都是为了之后试验将cpu从低功耗模式中唤醒。

生成工程代码,在keil中打开。Stm32的hal库中已经封装好了低功耗模式的函数,但是为了便于使用我们自己需要的唤醒功能、实现我们需要的功耗控制,一般会把函数再封装一次。

a)sleep模式的使用

先看sleep模式的使用,进入sleep模式的代码如下:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

因为所有的中断都能唤醒sleep模式,所以在进入sleep模式前,需要关闭systick中断,因为systick每1ms会产生一次中断,如果不关闭,则sleep模式会很快自动退出来;

接着是调用HAL库函数,进入sleep模式;

最后是恢复systick中断,这一步是为了在sleep模式被唤醒后,恢复原有的系统systick节拍。

之后,就可以调用这个函数,来进入sleep模式了。

由于sleep模式只是内核时钟关闭,外设是仍然在运行的,所以唤醒后系统的状态还和进入低功耗模式前一样。

b)stop模式的使用

stop模式使用时,进入stop模式的代码如下:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

这里我们设置使用PA0为唤醒引脚,所以先清除它的中断标志;再调用HAL库函数进入stop模式。

之后就可以调用它来进入stop模式了。

但是要注意的一点是,stop模式被唤醒后,时钟默认使用的是内部RC振荡器,外设的时钟也被关闭了,所以要重新初始化时钟和外设,这部分功能,我们编写一个函数来实现:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

(这里为了实现简单,把main函数初始化的一部分拷贝过来了,实际上有些函数可以简化)

这样,需要进入stop模式时,我们直接如下调用者两个函数即可:

enter_stop_mode();

exit_stop_mode();

enter_stop_mode()函数进入stop模式,设置PA0作为唤醒功能;被唤醒后,回到exit_stop_mode()处执行,恢复内核与外设时钟,再执行后面的其他程序。

c)standby模式的使用

standby模式使用时,进入standby模式的代码如下:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

与stop模式是类似的,也是设置使用PA0为唤醒引脚,所以先清除它的中断标志;再调用HAL库函数进入standby模式。

由于standby模式被唤醒后,会从程序起始处开始执行,相当于复位,main函数的初始化程序都会再执行一遍,所以不用对退出standby模式作处理。使用时直接调用enter_standby_mode()函数即可。

此外,可以通过在程序起始时,判断电源控制/状态寄存器(PWR_CSR)的状态,来识别是从standby模式被唤醒的,还是系统被复位了,主要的代码如下:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

3)低功耗和唤醒试验

现在我们来试验一下这几种低功耗模式的进入和唤醒。

在这之前,我们先编写一个RTC alarm的函数,使得可以方便地设置RTC闹钟时间,使用RTC唤醒,代码如下:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

这个函数实现的功能是,先读取当年前的RTC时间,再将闹钟时间设置到当前时间加nsecond秒之后,然后启动RTC alarm中断,这样就能方便地设置到nsecond秒后产生RTC alarm中断。

在Main函数的主循环中添加如下测试sleep模式的代码:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

先设置10s后RTC alarm中断,然后进入sleep模式;由于在生成工程时,我们还设置了外部中断PA1;所以,只要RTC计时达到10s、或者PA1上有下降沿,都会触发中断,退出sleep模式;退出之后,还进行了关闭RTC alarm中断的操作。程序运行结果如下图所示:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

再试验stop模式,添加如下代码:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

同样是开启10s后RTC中断,之后进入stop模式;退出stop模式后,也进行了关闭RTC alarm中断的操作。

这段程序运行时,stop模式也是能被RTC alarm、PA1(外部中断1)唤醒的,同时,由于我们设置了唤醒引脚PA0,在PA0上的上升沿也能唤醒。程序运行如下:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

Standby模式试验,代码如下:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

注意standby模式下,唤醒之后是类似复位,到程序的起始地址去执行了;

printf("fail to standby mode\t%d\r\n",count++);这一句,正常情况下是执行不到这里的。

这段代码运行的结果如下,可以看到,从standby模式中被唤醒后,没有执行之后的语句,而是“复位”了:

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

4)stm32的低功耗使用注意事项

a)程序起始时建议延时几秒再进入低功耗模式,否则一进入就不能使用下载口了,程序下载会很不方便;设置延时几秒再进,在上电之后几秒内完成下载就不会有问题;或者SWD接口之外,再连上复位线;

b)不用的IO口设置为模拟输入态最省电;cubemx里可以如下图设置,进入定低功耗模式前,将特殊的几个单独设置一下;

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件

c)中断输入的引脚如果有上下拉,则会消耗电流;

d)如果外部晶振不使用,必须将引脚配置为输入上拉、下拉或者输出低电平,配置为浮空输入会消耗极大的电流(200uA);

e)输入引脚,如果高阻状态端口是高电平,就设成上拉输入,如果高阻状态是低电平,设成下拉输入,如果高阻是中间状态,设成模拟输入;输出引脚会耗电,如果可以尽量不用;

f)进入stop模式前,不要将pwr的clk关闭,实际测试关闭能用,也能唤醒,但是电流会增加10uA;实际上stop模式会关闭外设和内核时钟,不用单独去关闭其他外设的时钟;

g)在运行模式下、或者sleep模式下,由于时钟是还在的,降低时钟可以降低功耗。

最后上实测图,STM32H7系列电流降至695uA

芯片睡眠和待机区别,stm32,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-770657.html

到了这里,关于STM32睡眠、停机、待机说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32F103ZET6 封装 LQFP-144 ST意法 单片机芯片

    STM32F103ZET6 是意法半导体(STMicroelectronics)生产的一款基于 ARM Cortex-M3 内核的 32 位微控制器。它具有高性能、低功耗的特点,广泛应用于各种嵌入式系统和工业应用中。STM32F103ZET6 的主要特点如下: 内核:ARM Cortex-M3,工作频率最高可达 72MHz。 存储器:64KB SRAM,512KB FLASH。 外

    2024年04月22日
    浏览(65)
  • STM32F4_待机唤醒详解

    目录 1. 低功耗模式 1.1 降低系统时钟速度 1.2 外设时钟门控 2. 睡眠模式 2.1 进入睡眠模式 2.2 退出休眠模式 3. 停止模式 3.1 进入停止模式 3.2 退出停止模式 4. 待机模式 4.1 进入待机模式 4.2 退出待机模式 4.3 电源控制寄存器:PWR_CR 4.4 电源控制/状态寄存器:PWR_CSR 5. 库函数配置进

    2024年02月16日
    浏览(39)
  • Stm32待机模式的进入与唤醒

    1.基础介绍  1-1:单片机的“低功耗模式”,像是手机的待机模式,不同于正常运行模式,处于一种省电省资源的状态 1-2:在运行情况下,HCLK为cpu提供时钟,cortex-m3内核执行程序的代码,如果处于中断事件的等待时,可以进入低功耗模式用来节省资源等 1-3:STM32一共有着3个

    2024年02月16日
    浏览(39)
  • 在Proteus中添加元件库所没有的单片机芯片(STM32F407ZGT6为例)

    今天在画仿真图时发现proteus元件库里的stm32系列并没有我所需要的。通过百度才到了官网下载相应的元件,后自己导入到元件库! 1、官网链接为:https://componentsearchengine.com/part-view/STM32F407ZGT6/STMicroelectronics 先注册账号后下载相应的元件即可。 2、解压元件的压缩包 3、打开p

    2024年02月16日
    浏览(59)
  • 【无标题】STM32 RTC闹钟中断和唤醒待机模式

    RTC代表的是实时时钟的意思。因为它提供的时钟基准比较准确所以用处还是很多的。本文章主要讲解基于STM32F103上的RTC闹钟中断功能以及用闹钟中断唤醒STM32的待机模式。 需要注意RTC的几个要点:1.RTC的值被设定后它就会一直按照设定的基准时间自己递增,如果你的硬件设备

    2024年04月14日
    浏览(51)
  • STM32 低功耗-睡眠模式

    在 STM32 的正常工作中,具有四种工作模式: 运行、睡眠、停止和待机 模式。 在系统或电源复位以后,微控制器处于运行状态,当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗。这些低功耗模式电源消耗不同、唤醒时间不同和唤醒源不同。 例如等待某个外部事件

    2024年02月14日
    浏览(37)
  • STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)

    看到很多技术帖子讲述RTC定时唤醒功能的时候,老是需要去读取当前时间,再设定下一个闹钟唤醒时间,无形中多了很多变量和操作。所以我决定分享一种简单的RTC定时唤醒方法,适合于不需要实现具体时间获取的场合,仅实现RTC定时唤醒的功能。 电池类便携式产品一般都要

    2024年02月03日
    浏览(47)
  • 【正点原子STM32连载】第三十一章 待机模式实验 摘自【正点原子】APM32E103最小系统板使用指南

    1)实验平台:正点原子APM32E103最小系统板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 本章介绍APM32E103低功耗模式中的待机模式,进入待机模式后,MCU内部的电压调压器将断开1.3V电源域

    2024年01月22日
    浏览(76)
  • 【正点原子STM32连载】第三十三章 待机模式实验 摘自【正点原子】APM32F407最小系统板使用指南

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html## 本章介绍APM32F407低功耗模式中的待机模式,进入待机模式后,MCU内部的电压调压器将断开1.3V电源域

    2024年02月07日
    浏览(59)
  • 【明解STM32】一文读懂STM32芯片总线

    目录 一、前言 二、总线基础知识概述 (1)、总线在芯片中的角色 (2)、总线的类型 (3)、总线的指标 (4)、AHB和APB 三、总线框架结构 (1)、结构类型 (2)、总线模块 (3)、总线交互 四、总结         本篇介绍STM32芯片内部的总线系统结构,嵌入式芯片内部的总线和计算机总线类似

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包