打印

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

[复制链接]
3351|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.由综合评估得出,不在生产中测试。

你违反规则偷偷测试,后果自负

使用特权

评论回复
5
huidun| | 2013-1-10 21:00 | 只看该作者
硬件方面应该没问题

使用特权

评论回复
6
平常人| | 2013-1-10 21:24 | 只看该作者
在进低功耗的时候,最好把所有I/O口配置为浮空输入。

使用特权

评论回复
7
tonly0212|  楼主 | 2013-1-11 10:02 | 只看该作者
平常人 发表于 2013-1-10 21:24
在进低功耗的时候,最好把所有I/O口配置为浮空输入。

进低功耗之前我已经将所有IO都作为模拟输入,除了IO还需要设置其他的什么东西吗?像PLL什么的~~~

使用特权

评论回复
8
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);
   }
  }
}

使用特权

评论回复
9
平常人| | 2013-1-11 11:32 | 只看该作者
tonly0212 发表于 2013-1-11 10:02
进低功耗之前我已经将所有IO都作为模拟输入,除了IO还需要设置其他的什么东西吗?像PLL什么的~~~ ...

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

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

使用特权

评论回复
10
tonly0212|  楼主 | 2013-1-11 12:56 | 只看该作者
平常人 发表于 2013-1-11 11:32
“除了IO还需要设置其他的什么东西吗”?

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

上面是我用最小系统验证用的程序,然而进入停止模式为2mA左右,待机模式为250uA左右,像这样的数据正常吗?

使用特权

评论回复
11
fugushatu| | 2013-1-11 16:50 | 只看该作者
用万用表一点点的量你电路上的耗电器件吧~~ 总归能找到的
不能不看电路全都设置成输入,也会有电流消耗的

使用特权

评论回复
12
tonly0212|  楼主 | 2013-1-11 17:01 | 只看该作者
谢谢大家,问题已经找到了,供电部分有近1mA的功耗,还有用的LCD有个引脚连接的有缺陷,功耗有1mA,所以功耗一直降不下,现在已经解决,停止模式在350uA左右,待机模式在2uA左右,还有在进低功耗之前,像TIM,DMA,ADC等都要关闭。。。
谢谢~~~

使用特权

评论回复
13
njchenmin| | 2013-1-12 06:58 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

24

帖子

0

粉丝