Stm8L051 CT1711 低功耗温度采集

 
Stm8L051/L052系列单片机的低功耗有五种模式:
1. wait模式
2. Lowpower run模式
3. Lowpower wait模式
4. Active-haltwith full RTC模式
5. Halt模式
    最低功耗的就是就是halt模式。这里也主要总结一下如何进入halt模式,进入以后可以通过什么方式唤醒,以及有很多人会关心的如何自动唤醒。
    Halt模式进入很简单,执行一条halt指令,调用库函数halt()。但是进入前要注意把所有的中断挂起标志给清除掉。要是不清零又恰巧有中断标志的时候进入该模式也会被立马唤醒。进入这种模式,所有的外设全都关闭了,所有时钟关闭。这时候它自己是醒不过来的,只能给个外部中断或者重启复位。当然这个在进入halt之前是要把中断引脚什么的该配置的给配置好了。
 
    那现在有个问题就是在halt模式下只能通过外部中断和复位了,我需要它自动醒过来怎么办?那就在需要设置RTC时间,到点了就要醒过来。既然开了闹铃了它也就不是纯halt模式了。这时候也就叫做active-halt模式。Active-halt模式下可以打开个rtc和lcd。
设置rtc自动唤醒功能步骤:
1、选择RTC时钟源(使用lse或者lsi)                         CLK_RTCClockConfig(CLK_RTCCLKSource_LSI,CLK_RTCCLKDiv_1);
2、使能RTC的时钟                                                    CLK_PeripheralClockConfig(CLK_Peripheral_RTC,ENABLE);
3、选择RTC唤醒时钟源                                            RTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits);
4、RTC唤醒计数中断使能                                         RTC_ITConfig(RTC_IT_WUT,ENABLE);
5、使能所有中断                                                     enableInterrupts();
以上是初始化进行配置的部分。而每次要进入halt模式的时候我们还需要执行以下的步骤:        
1、设置唤醒的时间:                                               RTC_SetWakeUpCounter(5);
2、RTC唤醒使能:                                                  RTC_WakeUpCmd(ENABLE);
3、执行halt指令:                                                   halt();      
 
 
记得在中断函数中也需要处理:
INTERRUPT_HANDLER(RTC_CSSLSE_IRQHandler,4)
{
      RTC_ClearITPendingBit(RTC_IT_WUT); //中断标志位要清除
}
 
目前在STM8L051上实现了CT1711低功耗温度采集的功能,在工作状态下工作电流1ma左右,休眠模式下工作电流4ua左右。直接上代码:
RTC配置部分:
void RTC_Config(void) 
{
  RTC_DeInit(); //初始化默认状态 
  CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_64); //注意调整休眠大小改这里。
  CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); //允许RTC时钟 
  RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16); //
  RTC_ITConfig(RTC_IT_WUT, ENABLE); //开启中断 
  

void main()

{

while(1)

{

RTC_SetWakeUpCounter(2150); //设置RTC Weakup计算器初值   1分钟 2150
  RTC_WakeUpCmd(ENABLE); //使能自动唤醒 
  halt();
  RTC_WakeUpCmd(DISABLE);

}

}

CT1711的实现我就不再这里说了,在我上一篇文章中有详细说明,以及例程都有,需要的可以自行下载验证。这个都是在实际的产品中测试过的。

注意一个小细节,在设备不用的GPIO口记得置高,对应的功耗最低。

发布了11 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ljl578040826/article/details/104695825