STM32待机模式下功耗高

本文探讨了如何在STM32单片机中实现待机模式,包括WKUP引脚唤醒机制和GPIO配置。作者在测试过程中遇到功耗问题,通过查阅资料、软件调整和硬件排查,发现是外部5V转3VIC导致的额外能耗,最终解决了低功耗问题。
摘要由CSDN通过智能技术生成

1、待机模式介绍-standby mode

2、程序编写

根据需要选择最低功耗模式——standby模式,使用WKUP引脚PA0唤醒,WKUP引脚高电平唤醒MCU

void KEY_Init(void) //IO初始化
{ 
 	GPIO_InitTypeDef GPIO_InitStructure;
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);//时钟使能
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0设置成输入,上拉	  
	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.0
}
void Standy_mode(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);	//使能PWR外设时钟
	PWR_WakeUpPinCmd(ENABLE);  //使能唤醒管脚功能
	PWR_ClearFlag(PWR_FLAG_WU);
	PWR_EnterSTANDBYMode();	  //进入待命(STANDBY)模式 	
}

3、所遇问题以及解决过程

测试待机功能表现正常,待机之后运行指令灯灭、屏灭,按下WKUP引脚,MCU被唤醒,运行指示灯重新闪烁。

测试功耗电流发现不符合要求,最低电流仍有300uA,并且偶尔有个13mA的电流

某人查看电流测试情况后提出判断,这种不平稳的功耗电流可能是没有真正进入待机,本人表示不认同但是功耗确实有问题,开始查阅资料、核对软件。

①通过查阅资料发现,待机模式后,所有IO口均为高阻态,待机前需对GPIO口做合理配置以降低功耗,网上说法挺多且有点乱,未能全部理解,因此在软件上做两点改进:

a)未被用到的GPIO口设为模拟输入

b)用到的GPIO口在待机前给予确定电平

(有错误或者需要补充的麻烦在评论区指正,我也是在学习中......)

②修改软件后再次测试功耗,还是一样的,再次琢磨软件,但是真的没找出软件的毛病,因此屏蔽软件其他功能,只留待机和运行指示灯作为测试软件,并断开板子其他可能耗电模块,测试结果一样

③断开stm32外围连接的所有IC,烧录测试软件与完整软件的测试功耗均符合要求,最低功耗约为3.7uA,逐步排查耗电部件,发现是一个5V转3V的IC在耗电,至此问题解决。(真真是吃了硬件太烂的亏.......)

4、参考文章

STM32单片机-低功耗设置_stm32低功耗设置-CSDN博客

STM32低功耗时,I/O引脚配置的问题-CSDN博客

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值