本帖最后由 jaywhitejay 于 2014-8-11 10:17 编辑
大家好,求助一个STM32F103的停止模式下功耗大的问题。
我现在停止模式下用电池供电的功耗达到了5.5mA。我使用PVD中断双向触发实现进入停止模式和唤醒
我的程序工作流程是这样的:主电工作中->掉主电进入电池供电(2.5V)->PVD中断->降低工作频率、关闭时钟、IO口设为模拟输入->进入停止模式,测量电流有5.5mA。
求大神们给指点。
附上进停止模式前的处理程序。
void LowPower_Init(void)
{
RCC_HCLKConfig(RCC_SYSCLK_Div512);
RCC_PCLK2Config(RCC_HCLK_Div16);
RCC_PCLK1Config(RCC_HCLK_Div16);
ADC_Cmd(ADC1, DISABLE); //关闭ADC
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_ADC1|RCC_APB2Periph_AFIO, DISABLE); //关闭USART/ADC等的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, DISABLE); //关闭GPIOA等的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , DISABLE); //关闭GPIOB等的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , DISABLE); //关闭GPIOC等的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD , DISABLE); //关闭GPIOD等的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,DISABLE); //关闭定时器等的时钟
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_Init(GPIOD, &GPIO_InitStructure); //所有管脚配置成模拟输入
// * *************关闭中断****************
EXTI_InitStructure.EXTI_Line = EXTI_Line0 |EXTI_Line1 | EXTI_Line2| EXTI_Line3| EXTI_Line4| EXTI_Line5| EXTI_Line6| EXTI_Line7| EXTI_Line8| EXTI_Line9 |EXTI_Line10 |EXTI_Line11 | EXTI_Line12;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = DISABLE;
EXTI_Init(&EXTI_InitStructure);
TIM_ITConfig(TIM2,TIM_IT_Update,DISABLE); //关闭定时器中断
TIM_Cmd(TIM2,DISABLE);
USART_Cmd(USART1, DISABLE); //关闭串口
USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
}
|