STM32低功耗分析(1)

随着计算机技术和微电子技术的迅速发展,计算机系统应用领域越来越广泛。在一些特定场景下,低功耗计算机的应用显得尤为重要。如在智能手机、医疗设备和工业控制等领域。由于这些领域对设备的大小、重量和/或持久性有很高的要求,所以低功耗技术在这几个领域有着广泛的应用。
在这里插入图片描述
计算机低功耗应用主要有以下几种:
物联网设备:物联网设备需要长时间运行,因此需要使用低功耗计算机,以确保设备在运行过程中不会快速耗尽电力。
在这里插入图片描述
嵌入式系统:嵌入式系统是一种小型计算机系统,用于控制或监测特定设备或系统。这些系统需要长时间运行,因此需要使用低功耗计算机,以确保系统不会因电力耗尽而失效。
在这里插入图片描述
移动设备:移动设备如智能手机、平板电脑等需要长时间使用,因此需要使用低功耗计算机,以确保设备不会过热或快速耗尽电力。
在这里插入图片描述
云数据中心:云数据中心需要大量的计算机资源来支持大量的用户和应用程序。这些计算机需要长时间运行,因此需要使用低功耗计算机,以确保电力消耗得到有效控制。

在这里插入图片描述
总而言之,低功耗计算机的应用越来越广泛,这些计算机采用了一系列创新技术来最大程度地降低功耗,同时还能够保证高性能的运行。这些技术的应用不仅有利于节能减排,还可以提高设备的性能和可靠性,推动计算机技术的不断发展。

3.如何降低功耗

处理器如何实现低功耗?关于这个问题,先不作答,先举一个生活中的例子来从侧面说明问题

假设一个人住在房子里面(这个房子有1个主卧,3个次卧,1个客厅,1个厨房),假设房子里面的每个房间的灯都开着,请问如何做可以节省电?

在这里插入图片描述

答案很简单,可以把没人住的3个次卧房间的灯关掉,这样耗电量就降低了。

在这里插入图片描述

如果还希望继续省电,应该怎么做呢?是不是可以客厅和厨房的灯关掉,然后一个人睡到主卧?这样是不是耗电量有减少了?

在这里插入图片描述

如果还希望继续省电,应该怎么做呢?是不是可以把主卧的灯也关掉?这样就不耗电了?

在这里插入图片描述
所以在生活中想要省电,只需要把用不用的或者不重要的用电器关掉即可。

4.处理器低功耗原理

在生活中通过关掉用电器可以实现省电节能的目的,同样的道理处理器也可以通过这种方法实现降低功耗。一个处理器是由许多部件组成,一些组件的电源系统是独立的,可以通过关闭处理器内部的组件的电压,可以实现降低功耗
在这里插入图片描述
我们以STM32F1系列处理器为例,STM32的工作电压(VDD)为2.0~3.6V。通过内置的电压调节器提供所需的1.8V电源,当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源,电源框图如下:
在这里插入图片描述
根据STM32电源框图不难发现,STM32 的电源系统可以分为3个部分:

1、VDDA供电区域。
2、VDD供电区域,该区域包含一个重要的1.8V供电区域。
3、后备供电区域。

在这里插入图片描述

4.1.VDDA供电区域

在这里插入图片描述
STM32处理器的 ADC电路模块配有独立的电源,这个电源就是VDDA电源,这种电路设计方便单独对ADC的电源滤波。VDDA供电区域使用 VDDA引脚输入,使用 VSSA作为独立的地连接,VREF引脚则为 ADC 提供测量使用的参考电压。

4.2.VDD供电区域

在这里插入图片描述
VDD供电域是 STM32处理器的电源系统中最主要的部分,其中调压器供电的电路是VDD供电域的核心。调压器为备份域及待机电路以外的所有数字申路供电,其中包括内核、数字外设(USART、TIMER、GPIO等)、 RAM以及FLASH。在这里插入图片描述
调压器的输出电压约为1.8V,因而使用调压器供电的这些电路区域被称为 1.8V 域。调压器可以运行在运行模式、停止模式以及待机模式

在运行模式下,1.8V 域全功率运行。

在停止模式下 1.8V 域运行在低功状态,1.8V
区域的所有时钟都被关闭,相应的外设都停止了工作,但它会保留内核寄存器以及SRAM的内容。

在待机模式下,整个 1.8V域都断电,该区域的内核寄存器及SRAM内容都会丢失。

4.3.后备供电区域

在这里插入图片描述
后备供电区域包括RTC、RTC BDCR寄存器、LSE振荡器和后备寄存器,后备供电区域由VBAT脚供电,使用电池或其他电源连接到VBAT脚上,当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。

5.STM32系列处理器的低功耗模式

在复位以后,微控制器处于运行状态。当微控制器不需继续运行时,可以利用多种低功耗模式来节省功耗。STM32F1系列处理器有三种低功耗模式

1、睡眠模式
2、停止模式
3、待机模式

这三种低功耗模式的功能框图如下:
在这里插入图片描述

5.1.睡眠模式

当Cortex-M3遇到WFE(等待中断)或者WFI(等待事件)指令时会停止内核时钟,停止程序执行。尽管Cortex-M3内核停止工作,但是处理器中的其他外设仍在继续工作。直到某个外设产生事件或者中断时,内核将会被唤醒,退出睡眠模式,程序继续运行(程序在进入睡眠时暂停,退出睡眠时继续运行)。在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态。
在这里插入图片描述
睡眠模式下核停止工作,其他外设仍在继续工作,具体情况如下:
停止:crotex-m内核。
开启:RAM存储器、FLASH存储器、数字外设(USART、TIMER、GPIO等)、待机电路、电压调节器。
睡眠模式是三种低功耗模式中最高的!睡眠模式的功耗数据如下
在这里插入图片描述
进入睡眠模式

通过执行WFI或WFE指令进入睡眠状态。根据Cortex-M3系统控制寄存器中的SLEEPONEXIT位的值,有两种选项可用于选择睡眠模式进入机制:
SLEEP-NOW:如果SLEEPONEXIT位被清除,当WRI或WFE被执行时,微控制器立即进入睡眠模式。
SLEEP-ON-EXIT:如果SLEEPONEXIT位被置位,系统从最低优先级的中断处理程序中退出时,微控制器就立即进入睡眠模式。

退出睡眠模式

如果执行WFI指令进入睡眠模式,任意一个被嵌套向量中断控制器响应的外设中断都能将系统从睡眠模式唤醒。
如果执行WFE指令进入睡眠模式,则一旦发生唤醒事件时,微处理器都将从睡眠模式退出。 唤醒事件可以通过下述方式产生:
在外设控制寄存器中使能一个中断,而不是在NVIC(嵌套向量中断控制器)中使能,并且在Cortex-M3系统控制寄存器中使能SEVONPEND位。当MCU从WFE中唤醒后,外设的中断挂起位和外设的NVIC中断通道挂起位(在NVIC中断清除挂起寄存器中)必须被清除。
配置一个外部或内部的EXIT线为事件模式。当MCU从WFE中唤醒后,因为与事件线对应的挂起位未被设置,不必清除外设的中断挂起位或外设的NVIC中断通道挂起位。
该模式唤醒所需的时间最短,因为没有时间损失在中断的进入或退出上。

进入睡眠模式的代码如下

void main()
{
Init();
while(1)
{
    if(GPIO\_ReadInputDataBit(GPIOC, GPIO_Pin_1) == 0)
    {
        LED = 0;
        \_\_WFI(); //\*进入睡眠模式 
		LED = 1;
    }
}

当外设产生事件或者中断时,内核将会被唤醒退出睡眠模式

5.2.停止模式

停止模式是在Cortex™-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。
进入停止模式时,停止内核时钟,停止程序执行。当一个中断或唤醒事件发生时,内核将被唤醒,退出停止模式,程序继续运行
在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。
在这里插入图片描述
停止模式下核停止工作,外设也停止工作,具体情况如下:
停止:crotex-m内核、数字外设(USART、TIMER、GPIO等)、FLASH存储器
开启:RAM存储器、待机电路、电压调节器。

停止模式是三种低功耗模式中排第二名!停止模式的功耗数据如下在这里插入图片描述
关于如何进入停止模式和如何退出停止模式,详见下表:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

img

img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)

img

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)

img

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

更多资料点击此处获qu!!

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: stm32f103是一类非常常见的嵌入式系统开发板,其中的低功耗程序是用户制定的一项能够让系统进入低功耗工作模式的相关程序,下面我们来了解一下它的相关特点和设计思路。 首先,低功耗程序的设计目的是尽可能地降低系统的功耗,使其处于低功耗待机状态时仍能正常运行。在实现低功耗程序之前,需要对系统的功耗进行详细的分析和测试,确定系统中哪些部分需要采取低功耗措施,如定时器、串口、IO口等,以及哪些部分不适合采取低功耗措施。同时需要针对不同的低功耗模式进行相应的程序设计和配置,如停止模式、休眠模式、备份模式等。 其次,为了让系统在低功耗状态下能够正常唤醒和运行,需要利用STM32内部的唤醒源,如外部中断、定时器中断等,对唤醒时钟进行设置,使得系统能够在唤醒时正常运行。此外,还需要对相关的外设进行电源管理,如关闭不必要的外设电源、降低实际工作时钟等,进一步降低系统的功耗。 最后,低功耗程序的实现需要考虑到系统运行效率和代码优化,尽可能地减少功耗方案带来的附加开销和延迟,同时要保证系统运行时的实时性和稳定性。为此,需要采用一些专门的开发工具和技巧,如优化编译选项、代码深度优化等。 综上所述,STM32F103的低功耗程序开发需要深入了解系统的工作原理和性能特点,针对系统特点进行设计和优化,充分利用系统资源,以达到最优的功耗优化效果。 ### 回答2: STM32F103是ST公司推出的基于ARM Cortex-M3内核的微控制器,拥有丰富的外设和强大的性能,同时使用起来也非常简单方便。在进行低功耗程序设计时,我们可以采用以下策略来降低功耗: 1. 系统时钟降频:降低系统时钟频率可以显著减少功耗,同时也可以延长电池寿命。 2. 去除闹钟:将闹钟模块关闭可以省去一部分功耗,特别是在RTC模式下使用电池供电的情况下。 3. 禁用外设模块:在不需要使用外设模块的情况下,尽可能地关闭这些模块,如CAN、SPI、I2C等。 4. 关闭浮空输入口:在外部输入口没有接上信号源的情况下,关闭这些输入口可以减少功耗。 5. 使用Sleep模式:STM32F103支持多种休眠模式。睡眠模式是一种相对简单且常用的模式,它可以在唤醒时快速恢复正常运行。 6. 使用Wait模式:在进入Sleep模式前,先将系统时钟降频并关闭不必要的外设模块,然后使用Wait模式降低功耗。 在低功耗程序设计中,我们需要考虑到系统的稳定性、响应速度、硬件价格和功耗等因素。通过合理的运用上述策略,可以有效地减少系统功耗,提升系统性能和使用寿命。 ### 回答3: STM32F103是一款高性能低功耗微控制器,它拥有多种省电模式,可在电池供电下工作,广泛应用于智能终端、消费电子、工业设备和家用电器等领域。下面是STM32F103低功耗程序的几点关注: 1. 选择合适的省电模式。STM32F103可以进入多种省电模式,包括休眠模式、停止模式、待机模式和低功耗运行模式等。不同的模式下功耗和恢复时间也不同,需要根据具体应用场景选择最适合的省电模式。 2. 关闭无用模块。在进入省电模式前,需要关闭一些无用的模块,如外设、闹钟等。这样可以有效地降低功耗。 3. 优化代码结构。优化程序结构和算法可以减少程序的执行时间,从而降低功耗。同时,只使用必要的外设也可以减少功耗。 4. 使用定时器。使用定时器可以在时间到达设定值时自动唤醒处理器,从而减少因等待时间而导致的功耗浪费。 5. 使用RTC实时时钟。RTC实时时钟可以在系统进入省电模式后保持微处理器时钟和日历计数器的计数。当需要唤醒系统时,RTC可以从闹钟中断触发唤醒。这种方式可以极大降低系统功耗。 总之,STM32F103的低功耗程序需要综合考虑各种因素,从各个方面进行优化,以实现最小化功耗的目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值