STM32低功耗Demo

发布者:WanderlustGaze最新更新时间:2024-10-17 来源: cnblogs关键字:STM32  低功耗  Demo 手机看文章 扫描二维码
随时随地手机看文章

本例展示了如何使用NVIC固件函数库来来展示Cortex-M3低功耗性能(WFE和WFI)。

本例使用了3条外部中断线路,线路3--KEY2,线路4--KEY3和线路13--JOY,在每一个信号下降研做为中断发生源或者事件源(event),其中外部中断线路3和13被设置为中断而线路4被设置成事件。用户需要在main程序开头的5个定义(define)语句中选择定义一个来决定进入那种低功耗模式。

这些选择为:

- Wait For Interrupt (WFI) Sleep On Exit:先按JOY,再加任一中断,即可进入SLEEP

                                        =》无法唤醒 只有key2可进入中断

选择“#define WFISLEEPONEXIT”,(表示退出ISR后睡眠)在这个模式里,如果某中断有足够高的优先级,那么系统会进入这个中断,在从这个中断返回后,自动执行指令WFI进入Sleep模式。运行例程,表现如下:

与PC.07连接的LED1闪耀提示系统运行在RUN模式,主程序执行中。

按按钮key2,进入EXTI Line3的中断,会改变与PC.06相连的LED2状态。

按按钮JOY_LEFT,进入EXTI Line13的中断,与PC.04相连的LED4状态改变提示进入此中断,中断处理完返回后程序选中SLEEPONEXIT功能,这时,如果程序如果再进入任一中断(如按按钮进入EXTI Line3中断),从中断返回后,系统都会自动进入Sleep模式,这时,与PC.07连接的LED1不再闪耀

 - Wait For Interrupt (WFI) Sleep Now =》key2可以唤醒 可以进入中断

                                      =》key3无法唤醒 

                                      =》JOY无法唤醒 可以进入中断

选择“#define WFISLEEPNOW”在此模式下,一旦执行WFI指令,系统立刻进入Sleep模式。运行例程,表现如下:

与PC.07连接的LED1闪耀提示系统运行在RUN模式,主程序执行中。

按按钮JOY_LEFT,进入EXTI Line13的中断,与PC.04相连的LED4状态改变提示进入此中断,中断返回后程序执行WFI进入Sleep模式。与PC.07连接的LED1不再闪耀。

按按钮key2,进入EXTI Line3的中断,会改变与PC.06相连的LED2状态。同时把系统从Sleep模式中唤醒,与PC.07连接的LED1恢复闪耀。

- Wait For Event (WFE) SEV ON PEND ==》都可以唤醒  进不了中断

选择“#define WFESEVONPEND”,在此模式下,程序会直接执行WFE指令,且使能PRIMASK寄存器(主程序优先级为0)。

点击(此处)折叠或打开

  1. /* Boost the execution priority to 0: no further exception can be asserted */

  2. NVIC_SETPRIMASK();

运行例程,表现如下:

与PC.07连接的LED1闪耀提示系统运行在RUN模式,主程序执行中。

按按钮JOY_LEFT,进入EXTI Line13的中断,与PC.04相连的LED4状态改变提示进入此中断,从中断返回后,主程序优先级被置0,因此将屏蔽所有中断,然后执行WFE进入Sleep模式。与PC.07连接的LED1不再闪耀。

此时,按按钮将不再进入中断,但是,在三条中断线路上的下降沿仍然构成事件,能够把系统唤醒,与PC.07连接的LED1恢复闪耀。但是,由于没有进入中断其它LED状态就不再改变。

如果定义了“#define RTC_Alarm_WFEWakeUp”,激活实时时钟警报功能,那么,即便不按按钮,6秒钟后CPU仍会被唤醒。

- Wait For Event (WFE) SEV ON EVENT =》可以唤醒  可以进入中断

选择“#define WFESEVONEVENT”,在此模式下,直接执行WFE指令。运行例程,表现如下:

与PC.07连接的LED1闪耀提示系统运行在RUN模式,主程序执行中。

按按钮JOY_LEFT,进入EXTI Line13的中断,与PC.04相连的LED4状态改变提示进入此中断,从中断返回后执行WFE进入Sleep模式。与PC.07连接的LED1不再闪耀。

此时,按任意按钮都会在三条线路上构成事件,将CPU唤醒,与前一种情况不同,此时,会进入中断,表现为LED状态会随着按按钮而相应地改变。

按下KEY2-->LED2翻转 按下JOY-->LED4翻转 LED1也翻转 :按下JOY唤醒则LED1翻转一下,同时进入中断,返回后LowPowerMode == 1,LED4翻转一下,执行WFE进入Sleep模式

如果定义了“#define RTC_Alarm_WFEWakeUp”,激活实时时钟警报功能,那么,即便不按按钮,6秒钟后CPU仍会被唤醒。


关键字:STM32  低功耗  Demo 引用地址:STM32低功耗Demo

上一篇:STM32之Flash
下一篇:STM32中断优先级实例

推荐阅读最新更新时间:2026-03-22 11:07

STM32正交编码器Demo
编码器分类: 按工作原理:光电式、磁电式和触点电刷式 按码盘的刻孔方式:增量式和绝对式两类 由于博主接触面还不是很广,一共就用过两个种类的编码器,都是属于光电的 差分编码器:一般由8根线连接 信号线分别为 A+ A- B+ B- Z+ Z- 以及VCC和GND 这里有一种不需要Z信号的,6线差分A+ A- B+ B- VCC 和GND 正交编码器:一般是5根线连接,信号线分别为A B Z VCC和GND 编码器线数: 就是旋转一圈你的A(B)会输出多少个脉冲 ,这里的A B就是上面的输出脉冲信号线,它们转一圈发出的脉冲数一样的,不过存在90°相位差 通常都是360线的 线数越高代表编码器能够反应的位置精度越高 相位差为90°
[单片机]
<font color='red'>STM32</font>正交编码器<font color='red'>Demo</font>
STM32低功耗模式中RTC唤醒与PA0唤醒协同工作的实用指南
一、 需求说明 本文使用一个示例来说明,需求如下: 我们要实现的功能是要做一个低功耗设备,检测外部信号,我们把外部信号连接至 STM32 的 PA0 。 如果检测到外部信号,执行某些工作(大概为200ms),但是呢,由于外部信号不是一次性的,而是持续一段时间的电平波动,所以在检测到一次外部信号以后,我们需要屏蔽PA0 一段时间,再重新开启 PA0 唤醒,为了保持低功耗,所以还是需要进入睡眠,除了PA0 唤醒后执行操作的 200ms 时间,其他时候都是在低功耗模式。 我们根据上面的需求,整理一下思路,同时介绍一下我们的实现平台 . 硬件平台: STM32L010F4 . 工作模式: Standby 模式 . 具体需求:
[单片机]
<font color='red'>STM32</font><font color='red'>低功耗</font>模式中RTC唤醒与PA0唤醒协同工作的实用指南
STM32单片机待机模式实现低功耗测试
只测试了待机模式,待机模式实现系统的最低功耗。 原理图如下,一开始全部焊接了,其中S2用来进入待机,S1用来唤醒 测试程序为: #include“stm32f10x.h”#include“system_stm32f10x.h”voidSys_Standby(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能PWR外设时钟PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚功能PWR_EnterSTANDBYMode();//进入待机(standby)模式}//系统进入待机模式voidSys_Enter_Standby(void){RCC_AP
[单片机]
<font color='red'>STM32</font>单片机待机模式实现<font color='red'>低功耗</font>测试
STM32单片机的低功耗模式与待机模式解析
STM32的3种低功耗模式: 睡眠模式:内核停止,外设如NVIC,系统时钟Systick仍运行。 停止模式:所有时钟都已停止;1.8V内核电源工作;PLL,HIS和HSERC振荡器功能禁止;寄存器和SRAM内容保留。 待机模式:1.8V内核电源关闭;只有备份寄存器和待机电路维持供电;寄存器和SRAM内容全部丢失;实现最低功耗。 STM32的3种低功耗唤醒方式: STM32待机模式: 在待机模式下,所有的I/O引脚均处于高阻态,除了复位引脚、被使能的唤醒引脚和TAMPER引脚。待机模式下只有2uA的电流,停机模式下20uA的电流。 库函数进入待机模式: 1. 使能电源时钟。 2. 设置WK_UP引脚作为唤醒源。 3. 设置S
[单片机]
<font color='red'>STM32</font>单片机的<font color='red'>低功耗</font>模式与待机模式解析
STM32速成笔记(13)—低功耗模式
一、STM32低功耗模式介绍 STM32提供了一些低功耗模式。默认情况下,系统复位或上电复位后,微控制器进入运行模式。在运行模式下,HCLK 为CPU提供时钟,并执行程序代码。当 CPU 不需要继续运行(例如等待外部事件) 时,可以利用多种低功耗模式来节省功耗。 STM32 提供了 3 种低功耗模式,以达到不同层次的降低功耗的目的 • 睡眠模式 (内核停止工作,外设仍在运行) • 停止模式 (所有时钟都停止) • 待机模式 ( 1.8 V 内核电源关闭) 这三种模式所需的功耗是逐级递减,也就是说待机模式功耗是最低的。 在睡眠模式中,仅关闭了内核时钟,内核停止运行,但其片上外设,CM3 核心的外设全都照常运行 。在停止模式中
[单片机]
<font color='red'>STM32</font>速成笔记(13)—<font color='red'>低功耗</font>模式
STM32低功耗状态时IO引脚常规的配置内容分享
做有低功耗产品设计经验的朋友都应该知道,一个产品的功耗不光是硬件功耗的事,其实软件也是影响整个产品功耗的一个关键因素。 今天就为大家分享一点关于STM32在低功耗状态时,IO引脚常规的配置内容。 1 将未使用的GPIO输入配置为模拟输入GPIO始终有一个输入通道,可以是数字或模拟通道。如果不需要读取GPIO数据,则优先配置为模拟输入。这节省了输入施密特触发器的消耗。在STM32CubeMX配置中都有这么一个选项:将不用引脚配置为模拟状态。 2 调节GPIO速度上升时间,下降时间和最大频率可使用GPIOx_OSPEEDR配置寄存器进行配置。这种调整对EMI(电磁干扰)和SSO(同时开关输出)有影响,因为开关电流峰值较高。
[单片机]
<font color='red'>STM32</font>在<font color='red'>低功耗</font>状态时IO引脚常规的配置内容分享
意法半导体推出功率量程更大的STM32 烧录调试器,赋能下一代超低功耗应用
2023 年 4 月 25 日,中国 – STLINK-V3PWR是意法半导体新推出的一款在线调试烧录器,能够准确地测量在任何一款STM32 微控制器 (MCU) 上运行的应用的功耗。 该产品的宽动态量程能够处理物联网和无线应用等功耗敏感的开发项目,可测量从纳安到 500mA 的电流值,测量准确度保持在±0.5%。此外,该产品用一条 USB 数据线就可以为目标系统提供最高2A的电流,开发人员无需再单独连接一个电源为电路板供电。 STM32CubeMonitor-Power图形工具直接支持STLINK-V3PWR ,能够实时图显应用的功率需求量,分析设计变更对功耗的影响,以便提高能效。此外,Arm® Keil® 开发工
[单片机]
STM32芯片超低功耗设计思路
对于给定的制造工艺和晶片区域,微控制器的功耗主要取决于两个因素(动态可控):电压和频率。 ST公司L系列超低功耗芯片为130nm超低泄漏工艺,在超低功耗所做的设计思路如下: 1、围绕Cortex-M3内核构建,具有领先的处理性能和代码密度,其处理性能使得运行模式时间更少,因此可以使深度睡眠模式的时间更长。 2、提供3个动态可选电压范围,从1.8V到1.2V,可在能耗上提供超过25%的增益。 3、提供7种低功耗模式,逐步禁用与频率无关的电流源(时钟源、非易失性存储器、调压器),直至大部分外设掉电。 4、灵活的门控技术,超低功耗模式下只激活必要的逻辑门。a)闲置的引脚配置为模拟输入;b)连接外围电路的引脚,提供有效的Pull
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved