STM8L如何低功耗

2019-03-23 19:20发布

我的程序如下,程序运行以后电流有1.5mA,如果使用halt指令程序就在那停机不运行,因为刚使用stm8,对于低功耗不太了解。想问问大家具体怎么实现呢?最好是给个demo。谢谢
static void CLK_Config(void)
{
  
  /* Select HSE as system clock source */
  CLK_SYSCLKSourceSwitchCmd(ENABLE);//使能时钟切换
  CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);//选择外部低速时钟作为时钟源
  /* system clock prescaler: 1*/
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//设置系统时钟分频
  while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_LSI)//等待时钟稳定
  {}
}
void main(void)
{
  CLK_Config();
   CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
  /*
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, ENABLE);
  TIM1_DeInit();
  
  
  
  TIM1_TimeBaseInit(100,TIM1_CounterMode_Up,1000,0);
  TIM1_ARRPreloadConfig(ENABLE);
  TIM1_ITConfig(TIM1_IT_Update,ENABLE);
  TIM1_Cmd(ENABLE);
  */
   
  TIM2_DeInit();
  
  
  
  TIM2_TimeBaseInit(TIM2_Prescaler_32,TIM2_CounterMode_Up,1024);
  TIM2_ARRPreloadConfig(ENABLE);
  TIM2_ITConfig(TIM2_IT_Update,ENABLE);
  TIM2_Cmd(ENABLE);
  GPIO_Init(GPIOC, GPIO_Pin_3, GPIO_Mode_Out_PP_High_Fast);
  GPIO_ResetBits(GPIOC , GPIO_Pin_3);
  enableInterrupts();
  
  while (1)
  {
    if(measure_count%2)
    {
       GPIO_ResetBits(GPIOC , GPIO_Pin_3);
       wfi();
    }
    else
    {
       GPIO_SetBits(GPIOC , GPIO_Pin_3);
     wfi();
    }
   
  }
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
安_然
2019-03-23 23:55
/ 关于意法半导体的EnergyLite超低功耗技术平台:
      STM8L全系列产品(和基于工业标准32位ARM® Cortex™-M3 CPU内核的STM32L系列产品)的制造技术均采用意法半导体的EnergyLite超低功耗技术平台。这项平台整合了意法半导体独有的130nm超低功耗制程和超低功耗非易失性存储器(EEPROM),动态电流消耗低至150uA/MHz。
      EnergyLite产品实现的稳压器能够在低电压下保持很低的工作电流,为设计人员最大限度降低应用的整体功耗提供了更多的灵活性。此项技术对微控制器的处理速度和功能没有任何影响,因为在1.65V到3.6V的电源电压(Vdd)范围内,CPU的整体性能可保持在最大频率的水平。此外,片上集成的模拟外设的正常工作电压降至1.8V,这有助于简化应用设计以及最大限度降低整体功耗需求。
      该技术平台还实现了多种电源管理模式,包括5.1uA低功耗工作模式、3.0uA低功耗等待模式、1.2uA暂停模式(RTC正常运转)和 350nA的停止模式。新器件可在4us内从停止模式唤醒,为频繁使用最低功耗模式提供了可能。
(本文转自电子工程世界:http://www.eeworld.com.cn/mcu/2010/0921/article_2300.html)

一周热门 更多>