STM32L151 STOP模式功耗过高
咨询下,哪位大神做过stop模式,现在程序电流很大,进入STOP后电流有800UA左右。有经验的能帮忙看下程序哪有问题吗,感激不尽int main(void){
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
SystemInit();
RTC_Config();
//RCC_LSEConfig(RCC_LSE_OFF);
Led_Init();
delay_init();
GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOC);
DisableDBGStopMode();
COMP_DeInit();
PWR_PVDCmd(DISABLE);
/* Add your application code here
*/
ADC_DeInit(ADC1);
/* Infinite loop */
while (1)
{
/* Enable Wakeup Counter */
RTC_WakeUpCmd(ENABLE);
gpio_lowpower_fun();
/* Enter Stop Mode */
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
}
}
进入低功耗前调用函数
void gpio_lowpower_fun(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOC, ENABLE);
RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_400KHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_Init(GPIOD, &GPIO_InitStructure);
RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOA, DISABLE);
RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOB, DISABLE);
RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOC, DISABLE);
RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOD, DISABLE);
}
1、800uA,说明mcu已经进入了休眠;
2、看硬件电路,比如LDO或者DCDC芯片的功耗;
3、看看有没有遗漏的IO口,进入休眠的时候没有设置,从而导致了漏电。
看看IO口的 将不用的IO都变成模拟输入模式 用官方的例程,注意外部电路的配置。对比看看。如果代码一样,那就要看你电路的连接方式了。
页:
[1]