8523|12

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

从停止模式唤醒到系统稳定需要多少时间 [复制链接]

    用STM32做过低功耗的帮帮忙,从停止模式唤醒到系统稳定需要多少时间?
自己在用低功耗的时候发现从停止模式唤醒到系统稳定需要十几个ms,如果没有十几个ms的延时的话,系统时钟就会强制打开HSI RC振荡器,配置好后可以从时钟输出管脚MCO看到8MHz的时钟频率。
   如果唤醒后还需要延时这么久的才能稳定的话,STM32将达不到产品的低功耗要求,只有舍弃了?!
此帖出自stm32/stm8论坛

最新回复

                                   外设重新初始化 xxx_Init()中包括哪些?对我来说很简单,需要用什么就初始化什么。   详情 回复 发表于 2008-10-13 13:29
点赞 关注
 

回复
举报

90

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

从停止模式唤醒到系统稳定需要多少时间

                                 可以拿ST提供的PWR中的STOP例程来实验,系统进入停止模式后,利用RTCAlarm 10ms唤醒一次,然后把主函数while循环内的延时时间改为11ms(18ms以下),配置好MCO为系统时钟输出后将会看到系统时钟已经变成8MH在左右的了……
此帖出自stm32/stm8论坛
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

“系统稳定”是什么意思?

根据数据手册,当使用HSI时,从STOP模式唤醒只需几个us的时间。如果按照数据手册要求(匹配电容和晶体等效电容等参数)使用HSE,HSE从启动至稳定的时间是2ms。

请检查你的HSE电路和相应的参数配置。


还有,“十几个ms的延时”是什么意思?依据什么?
此帖出自stm32/stm8论坛
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 

从停止模式唤醒到系统稳定

                                   STM32从停止模式唤醒到系统稳定,需要的时间应该在1ms以内吧
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

5
 

STM32从停止模式唤醒到系统稳定

                                   STM32从停止模式唤醒到系统稳定 ,附1张图
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 

STM32从停止模式唤醒到系统稳定

  STM32从停止模式唤醒到系统稳定,我刚好做过类似试验。从附图中可以看出。
  channel 2:从80ms~约170ms,STM32处于STOP模式;channel 3: 上升沿唤醒STM32,STM32已经稳定并且完成了4次AD转换后在channel 3输出低电平。channel 3的高电平时间肯定不到2ms,所以:STM32从停止模式唤醒到系统稳定,需要的时间应该可以在1ms以内
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 

从停止模式唤醒到系统稳定需要多少时间

非常感谢香版主和ijk的及时回复!
系统时钟是用外部8MHz晶振通过PLL倍频到16MHz,我提到的系统稳定是指系统从停止模式唤醒后到恢复系统时钟为16HMz,系统正常运行.
因为之前从停止模式唤醒后发现系统时钟一直都是8MHz左右(MCO管脚输出时钟),并不是自己想得到的16MHz.参考了例程,发现STOP例程主函数的while(1)循环程序中加有一个1.5s的延时,然后在自己的程序中也加一个十几个ms(香版提到的十几个ms就是在这里,以SysTick 1ms为时基)的延时后发现系统时钟的输出就为16MHz了.怀疑唤醒后到系统稳定不应该要这么久,所以才上来找大家帮忙.
______________________________________________________
//系统从停止模式唤醒后RCC的配置程序
void SYSCLKConfig_STOP(void)
{
  /* Enable HSE */
  RCC_HSEConfig(RCC_HSE_ON);

  /* Wait till HSE is ready */
  HSEStartUpStatus = RCC_WaitForHSEStartUp();

  if(HSEStartUpStatus == SUCCESS)
  {
    /* Enable PLL */ 
    RCC_PLLCmd(ENABLE);

    /* Wait till PLL is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }

    /* Select PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08)
    {
    }
  }
}
-----------------------------------------------------------------

-----------------------------------------------------------------
//例程中的while(1)程序
  while (1)
  {
    /* Insert 1.5 second delay */
    Delay(1500);//唤醒之后的延时!!

    /* Wait till RTC Second event occurs */
    RTC_ClearFlag(RTC_FLAG_SEC);
    while(RTC_GetFlagStatus(RTC_FLAG_SEC) == RESET);

    /* Alarm in 3 second */
    RTC_SetAlarm(RTC_GetCounter()+ 3);
    /* Wait until last write operation on RTC registers has finished */
    RTC_WaitForLastTask();

    /* Turn off led connected to GPIO_LED Pin6 */
    GPIO_ResetBits(GPIO_LED, GPIO_Pin_6); 

    /* Request to enter STOP mode with regulator in low power mode*/
    PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
    
    /* At this stage the system has resumed from STOP mode    
   /* Turn on led connected to GPIO_LED Pin6 */
    GPIO_SetBits(GPIO_LED, GPIO_Pin_6); 

    /* Configures system clock after wake-up from STOP: enable HSE, PLL and select 
       PLL as system clock source (HSE and PLL are disabled in STOP mode) */
    SYSCLKConfig_STOP();
  }
}
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

8
 

现在楼主测量的从停止模式唤醒到系统稳定需要多少时间呢

                                 给一个结论。
此帖出自stm32/stm8论坛
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

9
 

从停止模式唤醒到系统稳定需要多少时间

怀疑自己从停止模式唤醒后的时钟配置可能不对.
另外请教ijk,从停止模式唤醒后要进行哪些配置?
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

10
 

现在楼主测量的从停止模式唤醒到系统稳定需要多少时间呢

                                 现在也是在测试中,不好下结论^-^
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

11
 

从停止模式唤醒后进行的配置

  从停止模式唤醒后进行的配置,没有什么特别:其实跟复位后的配置没什么区别。如下代码,仅供参考:

    // Mode: STOP + Regulator in LowPower + Entry with WFI
    PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

    // re-start HSE
    RCC_HSEConfig(RCC_HSE_ON);
    // Wait till HSE is ready - HSE_RDY @ bit 17
    while((RCC->CR & (1<<17)) == 0)
      ;
    // Flash 2 wait state
    *(vu32 *)0x40022000 = 0x02;
    // HCLK = SYSCLK
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    // PLLCLK = 8MHz * 6 = 48 MHz
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);
    // Enable PLL
    RCC_PLLCmd(ENABLE);
    // Wait till PLL is ready - PLL_RDY @ bit 25
    while((RCC->CR & (1<<25)) == 0)
      ;
    // Select PLL as system clock source
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    // Wait till PLL is used as system clock source
    while(RCC_GetSYSCLKSource() != 0x08)
      ;
    // re-init Peripherals
    xxx_Init();
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

12
 

从停止模式唤醒后进行的配置

我从停止模式唤醒后进行的配置也一样,但观察MCO管脚输出的系统时钟还是不对。单步调试发现在唤醒后外部晶体振荡器已经被置位打开,HSE ready标志位也置位,同时HSI RDY和HSION也被置位……??
ijk兄,你在从停止模式下唤醒应该也没有加额外的延时吧?还想问下你唤醒后的外设重新初始化 xxx_Init()中包括哪些?我只重新初始化了GPIO。麻烦了,谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

13
 

外设重新初始化 xxx_Init()中包括哪些?

                                   外设重新初始化 xxx_Init()中包括哪些?对我来说很简单,需要用什么就初始化什么。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表