STM32单片机低功耗配置

一、低功耗模式

当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗,STM32支持三种低功耗模式,可以在要求低功耗、短启动时间和多种唤醒事件之间达到最佳的平衡。

  • 睡眠模式SleepMode。在睡眠模式,只有CPU停止,所有外设处于工作状态并可在发生中断/事件时唤醒CPU

 

  • 停机模式StopMode。保持SRAM和寄存器内容不丢失,达到最低的电能消耗。停止所有内部1.8V部分的供电, PLL、 HSI的RC振荡器和HSE晶体振荡器被关闭,调压器可以被置于普通模式或低功耗模式。可以通过任一EXTI从停机模式中唤醒, EXTI信号可以是16个外部I/O口之一、 PVD的输出、 RTC闹钟或USB的唤醒信号

 

  • 待机模式StandbyMode。最低的电能消耗。内部1.8V部分的供电被切断; PLL、 HSI的RC振荡器和HSE晶体振荡器关闭;SRAM和寄存器的内容将消失,但后备寄存器的内容仍然保留,待机电路仍工作。从待机模式退出的条件是: NRST上的外部复位信号、 IWDG复位、 WKUP引脚上的一个上升边沿或RTC的闹钟到时

 

二、低功耗模式基于HAL库的常用API

2.1睡眠模式SleepMode

  • __HAL_RCC_PWR_CLK_ENABLE();//电源管理使能
  • HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);//进入睡眠模式

2.2停机模式StopMode

  • __HAL_RCC_PWR_CLK_ENABLE();//电源管理使能
  • HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);//进入停机模式
  • ReSysClkConfig_STOP(); //停机唤醒后需要重新配置时钟  

2.3 待机模式StandbyMode

  • __HAL_RCC_PWR_CLK_ENABLE();//电源管理使能
  • PWR_Check_Standby();//检查是否是待机模式
  • __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);//清除唤醒标志
  • __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);//清除待机标志
  • __HAL_PWR_GET_FLAG(PWR_FLAG_SB);//获得待机模式标志
  • HAL_PWR_EnterSTANDBYMode();//进入待机模式

三、UnusedPin配置原则

1、不用的IO按照外部电路设置成上拉或下拉;

2、设置成浮空输入的功耗最大。

3、不用的管脚模拟输入。

 

 

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

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

相关文章

plsql连接oracle11g怎么配置,怎么使用plsql怎么连接64位Oracle11g数据库?

win764位Oracle11g64位下使用PLSQLDeveloper的解决办法1)安装Oracle 11g 64位 (这部分就不说了吧)2)安装32位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0)下载instantclient-basic-win32-11.2.0.1.0.zip (一定得是32位的,不要下错了版本,Orac…

在Ubuntu下设置笔记本外接显示器(双显示器)

From: http://www.xyfish.com/thread-216-1-1.html Ubuntu 8.04 设置笔记本电脑双显示器 目录: 1、设置显示分辨率及 xrandr 介绍 2、GNOME下切换双屏的方法 3、关于双屏下 GNOME面板/ wine / 阿里旺旺的一些问题及解决 正文: 1、设置显示分辨率及 xr…

我的第一个REST客户端程序!

Delphi:XE8 看了好几天的资料了,也没有弄出来一个REST程序,尝试了XE8中带的例子,也都没有搞懂。我在网上不断搜索,看是否能够找到适合自己的文章,希望能够做出来一个REST的小例子,万幸&#xff…

STM32 CubeMX 利用设置串口UART采用DMA接收

一、踩过的坑 1、CubeMX 生成工程的时候询问是否升级固件F103的1.61版本库,可以直接忽略,选择本地已经安装的1.60。否则不会导入HAL库到工程中。 2、产生代码的最后一步,选择对每个外设分别生成.c/.h文件,项目结构更清晰。 3、…

oracle锁表怎么解决,Oracle锁表问题的简捷处理技巧

在开发Oracle数据库时,我们常遇到频繁操作的Oracle数据表,会出现Oracle锁表。现在就针对这一问题,提下个人的解决Oracle锁表的技巧。首先问题分析:(1)锁的分析ORACLE里锁有以下几种模式:0:none1&#xff1a…

windows下恢复删除的逻辑分区

From:http://www.cnblogs.com/Spring/archive/2009/09/09/1563062.html 以前E盘分出一部分做过linux的分区,现在E盘空间不够用了,想增加空间,就到磁盘管理中,将之前的linux的逻辑分区删除了,删除后竟然发现整个E盘都没…

MVC PartialView

参考 Updating an MVC Partial View with Ajax RenderPartial vs RenderAction vs Partial vs Action in MVC Razor Adding a Custom Directory to Razor View Engine’s Partial View Locations in ASP.Net MVC3转载于:https://www.cnblogs.com/HQFZ/p/4560827.html

改变自己------每天进步一点点

改变自己------每天进步一点点 前端时间经常在51CTO上写博客,但因为其网站的DNS不稳定,导致很多次需要时都无法访问博客,最后放弃了在51CTO安家的想法,但网站今天说,DNS问题已经解决,所以决定以后就在51CTO…

GB4208中规定的外壳防护等级IP

外壳防护等级IP 经常看到仪器设备的介绍中包括防护等级,例如IP67,IP50等,不同的防护等级到底对应的是什么级别的防护呢,国标GB4208中有明确的规定。现摘录相关的描述,供查看。

如何对linux文件进行编译,linux编译和执行命令都有哪些?该如何实现?

我们知道,Linux是比如手机、平板电脑、路由器、台式计算机计算机设备的核心,它们都使用着Linux系统。以现在来说,一个合格的开发者必须要对Linux有一定的了解,那么,下面就跟小编一起来看看Linux是如何编译及执行的吧。…

如何给虚拟机上的linux系统添加虚拟硬盘

From: http://www.ezloo.com/2008/03/vmware_linux.html 给vmware虚拟机上的linux系统添加一个虚拟硬盘,并对硬盘进行分区、格式化、给分区创建文件系统,实现挂载,自动挂载! 步骤如下:保证你的linux系统处于关闭状态&a…

GB/T 17626 电磁兼容 试验和测量技术系列标准【归纳】

GB/T 17626 电磁兼容 试验和测量技术系列标准包括以下部分: GB/T 17626.1-2006 电磁兼容 试验和测量技术 抗扰度试验总论 GB/T 17626.2-2006 电磁兼容 试验和测量技术 静电放电抗干扰度试验 GB/T 17626.3-2006 电磁兼容 试验和测量技术 射频电磁场辐射抗干扰度试…

linux命令行打开写字板,在Linux操作系统中使用手写板

2009-07-28/14:24手写输入系统的出现拉近了大家与计算机之间的距离,使我们无须苦练输入法。此外,它也是绘画和平面设计爱好者手里的利器。Windows系统下使用手写板已经是司空见惯的事情了,但要在Linux中使用手写板呢?手写板和Linu…

音乐作曲类软件小记

ScordCloud cakewolk band in a box 水果 FL Studio Chordana Composer LogicX Pro转载于:https://www.cnblogs.com/passby/p/4561627.html

linux中fstab文件详解

From:http://www.winu.cn/space-14160-do-blog-id-1105.html 我们在linux中常常用mount命令把硬盘分区或者光盘挂载到文件系统中。/etc/fstab就是在开机引导的时候自动挂载到linux的文件系统。在linux中/etc/fstab的数据项如下所示:/dev/device mountpoint type…

Linux 普通用户和超级用户的切换

ubuntu16环境下。 1、输入su - 2、输入sudo passwd root,修改root密码。 3、切换普通用户 输入 su - jianwang16

winfrom 图片互传

private void button1_Click(object sender, EventArgs e)//从硬盘打开图片显示在窗体里面{OpenFileDialog op new OpenFileDialog();//造一个打开对话框DialogResult dr op.ShowDialog();//将打开对话框显示出来if(drDialogResult.OK) //如果点的是"打开"{FileStre…