打印

敢问各位大神 stml151 进入低功耗 退出方式

[复制链接]
2060|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linux_rookie|  楼主 | 2015-6-11 12:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近刚刚开始接触stmL151 低功耗芯片。没啥经验,也看了很多帖子,但是不太清楚  当通过:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
    PWR_FastWakeUpCmd(ENABLE);
    PWR_UltraLowPowerCmd(ENABLE);
    PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

进入stop模式后,怎么唤醒呢?唤醒是从哪个位置开始执行呢?
还有,唤醒之后还要对一些寄存器重新配置,因为为了保证低功耗在进入低功耗之前关闭了一些总线时钟啥的。 跪等大神帮忙,小弟拜谢!
沙发
linux_rookie|  楼主 | 2015-6-11 16:29 | 只看该作者
官方的文档stop模式是这样写的,它等待按键的按下,可否设置成中断模式呢?像RTC中断唤醒一样?
void StopMode_Measure(void)
00498 {
00499   /* Configure all GPIO as analog to reduce current consumption on non used IOs */
00500   /* Enable GPIOs clock */
00501   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC |
00502                         RCC_AHBPeriph_GPIOD | RCC_AHBPeriph_GPIOE | RCC_AHBPeriph_GPIOH |
00503                         RCC_AHBPeriph_GPIOF | RCC_AHBPeriph_GPIOG, ENABLE);
00504
00505   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
00506   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
00507   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
00508   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
00509   GPIO_Init(GPIOC, &GPIO_InitStructure);
00510   GPIO_Init(GPIOD, &GPIO_InitStructure);
00511   GPIO_Init(GPIOE, &GPIO_InitStructure);
00512   GPIO_Init(GPIOH, &GPIO_InitStructure);
00513   GPIO_Init(GPIOF, &GPIO_InitStructure);
00514   GPIO_Init(GPIOG, &GPIO_InitStructure);  
00515   GPIO_Init(GPIOA, &GPIO_InitStructure);
00516   GPIO_Init(GPIOB, &GPIO_InitStructure);   
00517
00518   /* Disable GPIOs clock */
00519   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC |
00520                         RCC_AHBPeriph_GPIOD | RCC_AHBPeriph_GPIOE | RCC_AHBPeriph_GPIOH |
00521                         RCC_AHBPeriph_GPIOF | RCC_AHBPeriph_GPIOG, DISABLE);
00522   
00523   /*  Configure Key Button*/
00524   STM_EVAL_PBInit(BUTTON_KEY, BUTTON_MODE_GPIO);
00525
00526   /* Wait Until Key button pressed */
00527   while(STM_EVAL_PBGetState(BUTTON_KEY) == RESET)
00528   {
00529   }
00530   /* Wait Until Key button pressed */
00531   while(STM_EVAL_PBGetState(BUTTON_KEY) != RESET)
00532   {
00533   }
00534
00535   /*  Configure Key Button*/
00536   STM_EVAL_PBInit(BUTTON_KEY, BUTTON_MODE_EXTI);
00537     
00538   /* Enable Ultra low power mode */
00539   PWR_UltraLowPowerCmd(ENABLE);
00540
00541   /* Enter Stop Mode */
00542   PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
00543
00544   /* Initialize LED1 on STM32L152-EVAL board */
00545   STM_EVAL_LEDInit(LED1);
00546
00547   /* Infinite loop */
00548   while (1)
00549   {
00550     /* Toggle The LED1 */
00551     STM_EVAL_LEDToggle(LED1);
00552
00553     /* Inserted Delay */
00554     for(index = 0; index < 0x5FF; index++);
00555   }
00556 }

使用特权

评论回复
板凳
fengzaideng| | 2015-6-11 16:39 | 只看该作者
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);唤醒后就从这句后面开始的。

使用特权

评论回复
地板
fengzaideng| | 2015-6-11 16:40 | 只看该作者
RTC中断可唤醒,IO口中断也可唤醒。

使用特权

评论回复
5
鸟神号| | 2015-6-11 16:57 | 只看该作者
可以设置定时器中断模式·有一个lptimer·这个timer可以使用外部LSE晶振做时基。。

你的芯片进入stop模式之后的消耗电流是多大?测过吗?

使用特权

评论回复
6
yinhaix| | 2015-6-11 17:29 | 只看该作者
中断或定时器都能唤醒

使用特权

评论回复
7
hemporer| | 2017-6-9 14:15 | 只看该作者
最近用了mdk最新版5.23,新建项目没有库,device里也没有,不知道是什么情况

使用特权

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

本版积分规则

1

主题

2

帖子

1

粉丝