历史上的今天
返回首页

历史上的今天

今天是:2025年07月10日(星期四)

正在发生

2019年07月10日 | STM32小白入门(第15天)-------低功耗

2019-07-10 来源:eefocus

一、低功耗模式


1、概述


   


2. 身边应用的例子


A. 电脑


                                  


A. 小米手环


                                 


二、睡眠模式


                               


三、停止模式


 

关于PWR_EnterSTOPMode的参数PWR_MainRegulator_ON与PWR_LowPowerRegulator_ON的区别:


#define PWR_MainRegulator_ON                        ((uint32_t)0x00000000)


#define PWR_LowPowerRegulator_ON                    PWR_CR_LPDS


#define PWR_CR_LPDS                        ((uint32_t)0x00000001)     /*!< Low-Power Deepsleep */


执行PWR_EnterSTOPMode函数并传递PWR_LowPowerRegulator_ON参数表示连为SRAM、寄存器供电的调压器也进入低功耗模式,可参考以下PWR_CR寄存器的描述:


 


PWR_MainRegulator_ON表示停止模式下调压器还是在开启状态。


四、待机模式


注意事项,当使用停止模式或待机模式下,如果要使用JLink烧录程序,必须得按一下复位键,然后立即点击下载键才能进行下载,原因在于唤醒的时候需要时间过长,导致超时不能进行正确地下载!


思考题:


在红外接收解码的程序当中,添加LED灯的控制、蜂鸣器的控制,并结合低功耗模式的使用。思考当低功耗模式为睡眠模式和停止模式,这两种有什么区别?区别是什么?


答:在睡眠模式下,红外数据能够正确地接收!在停止模式下,由于重新唤醒CPU,且切换时钟,导致接收红外数据超时,所以红外数据不能够正确地接收!


五、程序设计


1、睡眠模式


唤醒时间短,执行_WFI();  内核停止,外设依然工作


printf("This is sleep testrn");

while(1)

{

printf("cpu run into sleep....rn");

//执行__WFI指令,让CPU进入睡眠模式,立即停止运行指令

__WFI();

//延时500ms

//delay_ms(500);

printf("cpu wake up from sleep...rn");

//延时500ms

//delay_ms(500);

}

2、停止模式

printf("This is stop testrn");

while(1)

{

printf("cpu run into stop....rn");

//添加一个小延时,原因在进入停止模式的时候,串口缓冲区还有部分的数据,但是串口时钟已经开始不准确

delay_us(100);

//让CPU进入停止模式,CPU不仅仅停止运行任何指令,而且所有的时钟都停止

//内部的SRAM与寄存器的内容都会保留、PWR_LowPowerRegulator_ON参数表示连为SRAM、寄存器供电的调压器也进入低功耗模式

PWR_EnterSTOPMode(PWR_LowPowerRegulator_ON, PWR_STOPEntry_WFI);

//退出停止模式之后,M4会自动选择内部的HSI RC振荡器作为时钟源,但是实际上我们之前的代码都是使用到PLL,得重新初始化所有时钟

SystemInit();

printf("cpu wake up from stop...rn");

}

3、待机模式


printf("This is standby testrn");

while(1)

{

printf("cpu run into standby....rn");

//添加一个小延时,原因在进入待机模式的时候,串口缓冲区还有部分的数据,但是串口时钟已经开始不准确

//delay_us(100);

//让CPU进入待机模式,CPU不仅仅停止运行任何指令,而且所有的时钟都停止,1.2V域断电 RAM断电,唤醒效果相当于复位

PWR_EnterSTANDBYMode();   //RTC闹钟事件可唤醒

printf("cpu wake up from standby...rn");

}



推荐阅读

史海拾趣

BusBoard公司的发展小趣事

品质是企业的生命线。BusBoard公司深知这一点,因此从原材料采购到生产加工再到产品出厂,每一个环节都严格把控品质。公司建立了完善的品质管理体系,对每一道工序都进行严格的检验和测试。同时,公司还注重员工品质意识的培养和提升,确保每一个员工都能以高度的责任心对待自己的工作。这种对品质的执着追求使得BusBoard公司的产品在市场上赢得了良好的口碑。

Bellin公司的发展小趣事

BusBoard公司的创始人李明,是一位具有远见卓识的电子工程师。他看到电子行业正处于飞速发展的阶段,但市场上缺乏一种高效、灵活的电路板解决方案。于是,他毅然决然地创立了BusBoard公司,致力于研发和生产标准化的电路板总线板,为电子设备制造商提供便捷的定制和升级服务。通过不懈努力,BusBoard公司的产品在市场上获得了广泛认可,为公司的发展奠定了坚实基础。

BeagleBoard公司的发展小趣事

随着技术的不断进步,BeagleBoard公司始终保持着对创新的追求。他们不断研发新的技术,优化产品设计,推出了一系列具有创新性的产品。其中,BeagleBone Black是该公司的一款明星产品,它集成了高性能处理器、丰富的外设接口和强大的扩展能力,为开发者提供了更加便捷的开发体验。此外,公司还推出了工业宽温应用的变体,以满足不同领域的需求。

H&D Wireless公司的发展小趣事

2017年,高创被美的集团全资收购,成为美的工业技术事业群的重要业务板块之一。这一转变标志着高创进入了一个全新的发展阶段。借助美的集团的平台力量,高创在技术研发、生产制造、供应链管理等方面得到了显著提升。同时,与美的集团旗下其他业务板块如库卡机器人等的协同合作,进一步拓宽了高创的市场应用领域。

展恒电子(Broadic)公司的发展小趣事

展恒电子始终坚持以品质为核心,严格把控产品质量。在与上海芯北电子科技有限公司的合作中,双方共同保证产品品质的一致性、兼容性和安全性。在合作期间,展恒电子成功向客户供应了数百万片芯片,并得到了客户的高度认可和信任。这种对品质的坚持和追求,使得展恒电子在电子行业中赢得了良好的声誉,也为公司的长期发展奠定了坚实的基础。

这五个故事从不同角度展示了展恒电子(Broadic)在电子行业中的发展历程和成就,体现了其在技术创新、市场拓展、品质保证等方面的实力和努力。通过不断努力和创新,展恒电子已经在电子行业中取得了显著的成果,并将继续为行业的发展贡献自己的力量。

Gems Sensors & Controls公司的发展小趣事

随着技术的不断积累和市场的不断拓展,Gems Sensors & Controls公司成功加盟了全球知名的世界500强企业丹纳赫集团。这一举措不仅为公司带来了更多的资源和支持,也加速了Gems的全球化布局。如今,Gems的生产基地遍布北美、欧洲和亚洲,并在全球范围内设立了销售、设计和服务办事处,能够为客户提供更加全面和便捷的服务。

问答坊 | AI 解惑

《社区大讲堂》DO-254中的高设计可靠性的逻辑综合(五)--冗余逻辑

    缺省的逻辑综合目标都是减小面积,提高性能,而冗余电路和这一目标刚好相反。设计中的任何冗余都使设计面积增加,性能降低。 因此,逻辑综合工具缺省的设置都是寻找优化的方法来减少冗余,而不会自动的认识到冗余对设计可靠性的好处 ...…

查看全部问答>

高手请进

问哈 单片机编程是可以C和汇编 混合编写是吧  以前的思维一直以为只可以用一种些  不过近来发现好象可以 C对软件控制比汇编容易 而汇编对于输入和输出的控制比C容易点是么??…

查看全部问答>

请教各位版主和高手:中断调试

我编了一个小的中断程序,运行成功了,可是有的时候又不行?这是为什么? 另外我在中断服务子程序中点亮了一个灯,按说灯只要亮就说明进了中断,我这里会出现灯亮,PIVR向量却为0,且time也没有加1,这种情况是算进了中断了还是没进中断呢?出现这 ...…

查看全部问答>

UC3843中英文数据手册

UC3842/UC3843/UC3845中英文数据手册…

查看全部问答>

vxworks下的vxbus驱动问题

各位大侠,有谁了解vxbus的详细调用过程,特别是如何调用vxbDeviceMethod…

查看全部问答>

Xilinx GTP例化、调用

各位大神,哪位有GTP的例化到调用的全过程的资料啊?例化倒还可以,但是后面的modelsim或者ise simulator仿真的时候就不知道怎么弄了?急求这方面的资料教程~~~哪位大神行行好,拉小弟一把!!! 邮箱:834710955@qq.com…

查看全部问答>

arm-linux-gcc找不到头文件

各位大哥大神大侠,请帮帮我,搞了一天,要奔溃了。我是初学者,这是视频教程的一个hello的内核模块,用arm-linux-gcc-4.3.2编译时,总说找不到linux/init.h和linux/module.h, 我locate了一下,这两个文件在 /usr/src/kernels/2.6.35.6-45.fc14.i ...…

查看全部问答>

学习电子元器件的重磅资源---电子工程师必备:元器件应用宝典。胡斌老师抗鼎力作!

关于本书的评论 《电子工程师必备:元器件应用宝典》是一本元器件应用技术手册。全书介绍了各种常用元器件的基础知识和典型应用电路,具体内容包括电路符号信息解说,外形及型号识别方法,引脚分布规律及识别方法,引脚极性识别方法,主要特性讲解 ...…

查看全部问答>

如何判定回路图的上电容滤波效果的好坏呢

比如两个不同回路,大致看来都有滤波电容,电感之类的元器件,滤波类型也差不多,那如何判定哪个滤波效果好呢,是否是看电容,电感的数量或者电容,电感的容量大小,还是?…

查看全部问答>

关于全彩LED驱动的问题,求大神帮助

菜鸟一枚,第一次使用全彩LED,想用单片机控制六十个全彩LED同步工作,请教一下要用什么LED驱动器比较合适…

查看全部问答>