STM32低功耗问题,求助~~~~

[复制链接]
3823|12
 楼主| tonly0212 发表于 2013-1-10 16:28 | 显示全部楼层 |阅读模式
stm32f103进入待机模式后,能否实现使用普通IO口唤醒~~~~
IJK 发表于 2013-1-10 16:33 | 显示全部楼层
stm32f103进入待机(standby)模式后,不能由普通GPIO唤醒,只能由/RESET和某1个/几个wakeup引脚唤醒。
 楼主| tonly0212 发表于 2013-1-10 17:22 | 显示全部楼层
IJK 发表于 2013-1-10 16:33
stm32f103进入待机(standby)模式后,不能由普通GPIO唤醒,只能由/RESET和某1个/几个wakeup引脚唤醒。 ...

之所以问这个问题是因为我在做低功耗的时候,进停止模式功耗为3mA左右,进待机模式为800uA左右,之前本打算进停止模式用外部中断唤醒,但是捣鼓了一个上午也没有达到功耗控制在1mA以内的要求,和datasheet上的差别甚远,我想问一下,在进低功耗的时候,除了关闭外设所用时钟外,还需要注意什么啊?为什么我的最低功耗只能达到3mA~~~~硬件方面应该没问题,真心求解~~~~谢谢!!!!!!!!!!!!!!
明月小厨 发表于 2013-1-10 20:04 | 显示全部楼层


数据手册中有这样二段:
1.典型值是在TA=25℃下测试得到。
2.由综合评估得出,不在生产中测试。

你违反规则偷偷测试,后果自负
huidun 发表于 2013-1-10 21:00 | 显示全部楼层
硬件方面应该没问题
平常人 发表于 2013-1-10 21:24 | 显示全部楼层
在进低功耗的时候,最好把所有I/O口配置为浮空输入。
 楼主| tonly0212 发表于 2013-1-11 10:02 | 显示全部楼层
平常人 发表于 2013-1-10 21:24
在进低功耗的时候,最好把所有I/O口配置为浮空输入。

进低功耗之前我已经将所有IO都作为模拟输入,除了IO还需要设置其他的什么东西吗?像PLL什么的~~~
 楼主| tonly0212 发表于 2013-1-11 10:20 | 显示全部楼层
本帖最后由 tonly0212 于 2013-1-11 10:25 编辑

进低功耗之前只做了这些处理,因为PA口要做按键,用于外部中断唤醒,所以没有做处理,
有不妥的地方吗?
/* Private functions ---------------------------------------------------------*/
void befor_goto_stop(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        GPIO_Init(GPIOE, &GPIO_InitStructure);

        RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOC |
                                                        RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD |
                                                        RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO  ,   DISABLE);
}

int main(void)
{
  /* Enable PWR clock */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);        

  /* Enable WKUP pin */
// PWR_WakeUpPinCmd(ENABLE);

  PWR_BackupAccessCmd(ENABLE);
  EXTI_Configuration();
  NVIC_Configuration();
  /* Configure RTC clock source and prescaler */
  RTC_Configuration();

  while (1)
  {
   if(Power_flag==0)
   {
        befor_goto_stop();
    /* Request to enter STANDBY mode (Wake Up flag is cleared in PWR_EnterSTANDBYMode function) */
//        PWR_EnterSTANDBYMode();
        PWR_EnterSTOPMod(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
   }
  }
}
平常人 发表于 2013-1-11 11:32 | 显示全部楼层
tonly0212 发表于 2013-1-11 10:02
进低功耗之前我已经将所有IO都作为模拟输入,除了IO还需要设置其他的什么东西吗?像PLL什么的~~~ ...

“除了IO还需要设置其他的什么东西吗”?

这就不好说了,要看你的电路里面都有什么。
 楼主| tonly0212 发表于 2013-1-11 12:56 | 显示全部楼层
平常人 发表于 2013-1-11 11:32
“除了IO还需要设置其他的什么东西吗”?

这就不好说了,要看你的电路里面都有什么。 ...

上面是我用最小系统验证用的程序,然而进入停止模式为2mA左右,待机模式为250uA左右,像这样的数据正常吗?
fugushatu 发表于 2013-1-11 16:50 | 显示全部楼层
用万用表一点点的量你电路上的耗电器件吧~~ 总归能找到的
不能不看电路全都设置成输入,也会有电流消耗的
 楼主| tonly0212 发表于 2013-1-11 17:01 | 显示全部楼层
谢谢大家,问题已经找到了,供电部分有近1mA的功耗,还有用的LCD有个引脚连接的有缺陷,功耗有1mA,所以功耗一直降不下,现在已经解决,停止模式在350uA左右,待机模式在2uA左右,还有在进低功耗之前,像TIM,DMA,ADC等都要关闭。。。
谢谢~~~
njchenmin 发表于 2013-1-12 06:58 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

24

帖子

0

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