打印
[STM8]

STM8L怎么低功耗

[复制链接]
11277|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
denvice|  楼主 | 2013-1-31 12:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的程序如下,程序运行以后电流有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();
    }
   
  }
}
沙发
uet_cache| | 2013-1-31 12:28 | 只看该作者
如果定时器没用到,可以把它关了。1.5MA也不算多吧。楼主要求功耗有多少。。

使用特权

评论回复
板凳
denvice|  楼主 | 2013-1-31 13:28 | 只看该作者
这个MCU是STM8L152K起码要到ua级别吧,我不知道如何设置让他进入停机模式

使用特权

评论回复
地板
IJK| | 2013-1-31 14:28 | 只看该作者
denvice 发表于 2013-1-31 13:28
这个MCU是STM8L152K起码要到ua级别吧,我不知道如何设置让他进入停机模式

STM8L运行在32k时,记得约15uA左右,具体可以看它的datasheet。

另外STM8L官方有不少例子,包括低功耗的例子。

使用特权

评论回复
5
uet_cache| | 2013-1-31 14:31 | 只看该作者
是不是你外围电路耗的电

使用特权

评论回复
6
21ID| | 2013-1-31 15:03 | 只看该作者
uet_cache 发表于 2013-1-31 12:28
如果定时器没用到,可以把它关了。1.5MA也不算多吧。楼主要求功耗有多少。。 ...

低功耗1.5MA已经很大很大了

使用特权

评论回复
7
denvice|  楼主 | 2013-1-31 15:12 | 只看该作者
我没外围我就知专门给了一个io口来输出高低电平,啥都没有就是一个芯片一个电容一个电阻,就这样的电路

使用特权

评论回复
8
qianguiyi| | 2013-1-31 15:15 | 只看该作者
要注意不用的引脚设置为输入上拉,

使用特权

评论回复
9
sy_lixiang| | 2013-1-31 17:16 | 只看该作者
1.不用的引脚固配置为固定输出低电平。
2.把没用到的资源全部关掉。
3.做到上边两步,一句hatl();就能进入。
4.进入低功耗模式后,待机电源大约3uA。

以上本人实测过。

使用特权

评论回复
10
sy_lixiang| | 2013-1-31 17:21 | 只看该作者
看你程序的意思是想通过外部中断唤醒是吗?

使用特权

评论回复
11
sy_lixiang| | 2013-1-31 17:29 | 只看该作者
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 IO_Init()
{
        GPIO_DeInit(GPIOA);
        GPIO_DeInit(GPIOB);
        GPIO_DeInit(GPIOC);
       
        //以下依你的硬件使用情况来做
        GPIO_Init(GPIOA,GPIO_Pin_All,GPIO_Mode_Out_PP_Low_Fast);
        GPIO_Init(GPIOB,GPIO_Pin_All,GPIO_Mode_Out_PP_Low_Fast);
        GPIO_Init(GPIOC,GPIO_Pin_All,GPIO_Mode_Out_PP_Low_Fast);
}

void somemeasuer()
{
        //看你的了,你要用中断吧?
}

void main(void)
{
        int measure_count=0;
       
        CLK_Config();
        enableInterrupts();
       
        measure_count=somemeasuer();
       
        while (1)
        {
                if(measure_count%2)
                {
                        GPIO_ResetBits(GPIOC , GPIO_Pin_3);
                        //wfi();
                        halt();
                }
                else
                {
                        GPIO_SetBits(GPIOC , GPIO_Pin_3);
                        //wfi();
                        halt();
                }
        }
}

使用特权

评论回复
12
denvice|  楼主 | 2013-1-31 23:07 | 只看该作者
sy_lixiang 发表于 2013-1-31 17:29

明天测试一下,非常感谢,不过我试过定时器唤不醒halt

使用特权

评论回复
13
denvice|  楼主 | 2013-1-31 23:08 | 只看该作者
sy_lixiang 发表于 2013-1-31 17:21
看你程序的意思是想通过外部中断唤醒是吗?

不是通过外部中断,我是想定时唤醒

使用特权

评论回复
14
IJK| | 2013-2-1 09:42 | 只看该作者
denvice 发表于 2013-1-31 23:08
不是通过外部中断,我是想定时唤醒

定时唤醒可以用RTC,功耗也挺低的

使用特权

评论回复
15
rocwill| | 2014-3-27 13:59 | 只看该作者
楼主你好,我最近也在使用STM8L的一款片子,做低功耗也遇到与你相似的问题,电流维持在1.5mA左右.不知后来是怎么解决的?

使用特权

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

本版积分规则

8

主题

162

帖子

2

粉丝