我的程序如下,程序运行以后电流有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();
}
}
}
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
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)
一周热门 更多>