[STM32F1] STM32F103停止模式功耗大

[复制链接]
6165|4
 楼主| jaywhitejay 发表于 2014-8-9 11:03 | 显示全部楼层 |阅读模式
本帖最后由 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);
}
airwill 发表于 2014-8-9 22:22 | 显示全部楼层
注意, 有没有 IO 口电流泄露. 好好查一下.
pofu007 发表于 2014-8-10 09:43 | 显示全部楼层
5mA的话,是外围电路在消耗电流的可能性很大,你去datasheet下查下有什么外设会消耗5mA的电流。
另外模拟输入我没记错的话应该是这样GPIO_Mode_AIN。
mmuuss586 发表于 2014-8-10 12:31 | 显示全部楼层
你这IO配置的输入,不是模拟输入;
mmuuss586 发表于 2014-8-10 12:32 | 显示全部楼层
这是XXX_gpio.h中的部分定义
typedef enum
{ GPIO_Mode_AIN = 0x0,
  GPIO_Mode_IN_FLOATING = 0x04,
  GPIO_Mode_IPD = 0x28,
  GPIO_Mode_IPU = 0x48,
  GPIO_Mode_Out_OD = 0x14,
  GPIO_Mode_Out_PP = 0x10,
  GPIO_Mode_AF_OD = 0x1C,
  GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

23

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部