在使用STM32L051C8T6开发低功耗产品时遇到这么个问题:第一次进入休眠模式时功耗可降低至3uA左右,符合预期;休眠时间6秒,唤醒后检测一个开关量输入信号后立马进入休眠,时间极短,随后再次进入休眠状态;就是这第二次进入后,休眠功耗变为5uA了,而且之后进入休眠都保持这个功耗,比预期高。这是什么原因造成的呢? 以下是进入和唤醒部分代码,用RTC定时唤醒。 void MCU_IntoStopMode(u16 wake_up_sec_time) { printf("\n******into sleep! wake_up_sec_time=%us\n",wake_up_sec_time); if(wake_up_sec_time==0) { return; } RTC_SetWakeUpCounter(wake_up_sec_time*2048); RTC_WakeUpCmd(ENABLE); MCU_StopMode_GPIO_Init();//GPIO设置 PWR_PVDCmd(DISABLE); PWR_FastWakeUpCmd(ENABLE); PWR_UltraLowPowerCmd(ENABLE); PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);//进入停止模式 // HSI_Config(); // UART_Init();//串口初始化 printf("out sleep!\n"); } void RTC_WKUP_IRQHandler(void) { RTC_WakeUpCmd(DISABLE); HSI_Config(); UART_Init();//串口初始化 if(RTC_GetITStatus(RTC_IT_WUT) != RESET) { // printf("RTC_IT_WUT\n"); RTC_ClearFlag(RTC_FLAG_WUTF); RTC_ClearITPendingBit(RTC_IT_WUT); EXTI_ClearITPendingBit(EXTI_Line20); } } |
STM32L011D4芯片用SWD无法下载程序
求助:STM32L0系列标准库哪里下?
STM32L051低温时LPUART串口波特率异常
STM32L051单片机ADC如何彻底关闭?
STM32L051C8进入低功耗模式电流偏大
STM32L052C8T6通过I2C模拟读16位数
STM32L0的VLCD外接5V会有问题吗
求助!!使用STM32L073 IO口模拟IIC接口读写AT24CM01 程序不停...
STM32L072RB写Bank2 EEPROM不响应中断
STM32L031无法进入boot
评分
查看全部评分
我这里的休眠是通俗的意思,芯片低功耗模式是STOP+RTC,理论功耗应该是1.2uA左右。我在只焊接主芯片的情况下第一次可以达到1.2uA,但当第二次进入休眠后就有3~4uA了,比理论值增加2uA左右,之后就一直是这个值了。
评分
查看全部评分
RTC自动唤醒
{
RTC_WakeUpCmd(DISABLE);
HSI_Config();
#ifdef USE_UART2
UART2_Init();//串口初始化
#endif
if(RTC_GetITStatus(RTC_IT_WUT) != RESET)
{
// log_debug("RTC_IT_WUT\n");
RTC_ClearFlag(RTC_FLAG_WUTF);
PWR_ClearFlag(PWR_FLAG_WU); //少了这一句
RTC_ClearITPendingBit(RTC_IT_WUT);
EXTI_ClearITPendingBit(EXTI_Line20);
}
}
原因是少了这一句
PWR_ClearFlag(PWR_FLAG_WU); //少了这一句