stm32L151低功耗心得

本文分享了STM32L151项目中实现低功耗的经验,详细介绍了三种低功耗模式:睡眠模式、停机模式和待机模式,并重点讲解了停机模式的应用。此外,文章还提供了降低电路板功耗的硬件设计技巧。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

前言

最近结束了一个STM32L151的项目,项目基本条件就是电池供电、物联化,还有一堆通讯式的外设。我以前主要以榨干单片机性能的项目为主,这个项目刚好相反,要求低功耗,而且STM32L151我也是第一次使用,写几篇文章纪念一下。
这个项目在启动之初,照旧还是各路神仙争夺硬件配置制高点的批斗大会。对于单片机的选型,要么是NXP的LPC系列,要么是ST的L1系列,最后为减少我自己的学习量,还是选了L1系列的单片机。

STM32低功耗的三种模式

STM32,包括F1和L1系列(其他系列没研究过低功耗部分),低功耗模式有三种:
(1) 睡眠模式:Cortex-M3内核停止,外围器件保持运行状态,比如RTC一直运行。
(2) 停机模式:所有的时钟停止,电源低功耗运行。
(3)待机模式:内核断电。
在这里插入图片描述
三种模式我都对比功耗,待机模式应该是功耗最低的模式。但是,停机模式下,任意的外部中断都能唤醒单片机,而且唤醒后内存内的数据依然保存为停机前的值,这两点对我的项目而言非常重要,我最终的选择就是使用停机模式。
进入停机模式前,还是有很多工作要做的,包括:
(1)停止所有不含唤醒所需外部中断的外部设备的供电,诸如关闭LED、停止给电机IC、通信模块供电等等。
(2)片上外设在唤醒时用不上的全部关闭并且DeInit。
(3)把唤醒时用不上的GPIO管脚全部改为输入,这一点很重要。STM32的管脚原理图如下:
在这里插入图片描述
(4)如果有需要,在停机前要先设置RTC的唤醒时间。
(5)最后一步才是执行停机指令。

/*系统进行停机模式以及唤醒后的时钟操作*/
void sys_sleep_wakeup(void)
{
   
   
	SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;  /* 关闭滴答定时器 */  
						
	portENTER_CRITICAL();
	PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFE);	
	
	//唤醒后			
	RCC_HSICmd(ENABLE);
	while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RE

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值