STM8L051低功耗模式实现说明文档

STM8L051低功耗模式测试文档
    STM8L051的五种低功耗模式wait ,low power run mode,low power wait mode,Ative-Halt mode,Halt mode。
1、WAIT  mode
飞机部件修理
  在等待模式,CPU的时钟是停止的,被选择的外设继续运行。WAIT mode 分为两种方式:WFE,WFI。WFE是等待事件发生,才从等待模式中唤醒。WFI是等待中断发生,才从等待模式中唤醒。
2、low power run mode
  在低功耗运行模式下,CPU和被选择的外设在工作,程序执行在LSI或者LSE下,从RAM中执行程序,Flash和EEPROM都要停止运行。电压被配置成Ultra Low Power模式。进入此模式可以通过软件配置,退出此模式可以软件配置或者是复位。
3、low power wait mode
  这种模式进入是在low power run mode下,执行wfe。在此模式下CPU时钟会被停止,其他的外设运行情况和low power run mode类似。在此模式下可以被内部或外部事件、中断和复位唤醒。当被事件唤醒后,系统恢复到low power run mode。
4、Active-Halt mode
  在此模式下,除了RTC外,CPU和其他外设的时钟被停止。系统唤醒是通过RTC中断、外部中断或是复位。
5、Halt mode
  在此模式下,CPU和外设的时钟都被停止。系统唤醒是通过外部中断或复位。关闭内部的参考电压可以进一步降低功耗。通过配置ULP位和FWU位,也可以6us的快速唤醒,不用等待内部的参考电压启动。
一、各个低功耗模式的代码实现
1、  WAIT  mode
  等待模式分为两种:WFI和WFE。
  1.1 WFI mode
    当执行“wfi”语句时,系统就进入WFI模式,当中断发生时,CPU被从WFI模式唤醒,执行中断服务程序和继续向下执行程序。
通过置位CFG_GCR的AL位,使主程序服务完中断服务程序后,重新返回到WFI 模式。
沟槽式管接头程序如下:
void Mcuwfi()
{
  PWR_UltraLowPowerCmd(ENABLE);  //开启电源的低功耗模式
  CLK_HSEConfig(CLK_HSE_OFF);    //关闭HSE时钟  (16MHz)
 
  #ifdef USE_LSE
电脑视保屏    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSE);   
    CLK_SYSCLKSourceSwitchCmd(ENABLE);
    while (((CLK->SWCR)& 0x01)==0x01);
    CLK_HSICmd(DISABLE);
  #else
    CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
    CLK_SYSCLKSourceSwitchCmd(ENABLE);           
    while (((CLK->SWCR)& 0x01)==0x01);
    CLK_HSICmd(DISABLE);
  #endif                    //切换时钟到LSI(38KHz)
 
  wfi();                    //进入WFI模式
  #ifdef Only_Interrupt      //设置CFG_GCR的AL位,服务完中断后回到WFI模式
  CFG->GCR =CFG_GCR_AL;
  #endif
}
1.2  WFE
  当执行“wfe”语句时,系统就进入WFE模式。
WFE有两种唤醒模式,一种是:中断唤醒,一种是:事件唤醒。
当中断唤醒时,当执行到wfe时,进入wfe模式休眠。系统执行步骤如下:进入WFE模式 ---> 有中断产生 --->系统唤醒 --->执行中断服务程序  --->继续休眠 。
当事件唤醒时,当执行到wfe时,进入wfe模式休眠。系统执行步骤如下:进入WFE模式 ---> 有中断产生 --->系统唤醒 --->执行中断服务程序  --->继续往下执行 。
2、low power run mode
eoo这种模式程序在RAM中执行,EEPROM和FLASH是在IDDQ(低功耗模式),时钟切换到低速时钟。
进入此模式的步骤如下:
1、进入RAM
2、切换系统时钟到LSE或LSI
3、关闭高速时钟、外设和ADC
4、屏蔽中断
5、通过设置FLASH_CR1的EEPM位来关闭FLASH和EEPROM
6、等待FLASH和EEPROM关闭
7、通过设置CLK_REGCSR的REGOFF位进入校准低功耗模式
退出low power run mode的步骤如下:
1、通过重置CLK_REGCSR的REGOFF位进入主校准模式,延时等待主校准稳定。
2、通过设置FLASH_CR1的EEPM位来打开FLASH和EEPROM,延时等待FLASH和EEPROM打开。
3、屏蔽所有中断。
程序如下:
void LPR_init(void)
{
/*Switch the clock to LSE and disable HSI*/
钙锌复合稳定剂  CLK_HSEConfig(CLK_HSE_OFF);
  #ifdef USE_LSE
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSE);   
    CLK_SYSCLKSourceSwitchCmd(ENABLE);
    while (((CLK->SWCR)& 0x01)==0x01);
    CLK_HSICmd(DISABLE);
  #else
    CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
    CLK_SYSCLKSourceSwitchCmd(ENABLE);
    while (((CLK->SWCR)& 0x01)==0x01);
    CLK_HSICmd(DISABLE);
  #endif
//PWR_UltraLowPowerCmd(ENABLE);
/*Configure event for WAKEUP and FUNCTION, disable the interrupts*/
  CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1); //切换系统时钟                                                                                            //  到LSI
 
  sim();                                                    //屏蔽中断
   
  LPR_Ram(); // Call in RAM                                //程序在RAM里执行
  //if(lowpowerwait_flag==1)
// {
//  lowpowerwait_flag=0;
//Switch on the regulator
  // CLK->REGCSR = 0xb9;
  // while(((CLK->REGCSR)&0x1) != 0x1);
  /*Switch the clock to HSI*/
    CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
    CLK_HSICmd(ENABLE);
    while (((CLK->ICKCR)& 0x02)!=0x02);
蜂巢芯 
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);

本文发布于:2024-09-22 07:01:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/197415.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模式   中断   唤醒
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议