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

上传人:b****3 文档编号:13696172 上传时间:2022-10-12 格式:DOCX 页数:9 大小:76.92KB
下载 相关 举报
STM8L051低功耗模式实现说明文档文档格式.docx_第1页
第1页 / 共9页
STM8L051低功耗模式实现说明文档文档格式.docx_第2页
第2页 / 共9页
STM8L051低功耗模式实现说明文档文档格式.docx_第3页
第3页 / 共9页
STM8L051低功耗模式实现说明文档文档格式.docx_第4页
第4页 / 共9页
STM8L051低功耗模式实现说明文档文档格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

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

《STM8L051低功耗模式实现说明文档文档格式.docx》由会员分享,可在线阅读,更多相关《STM8L051低功耗模式实现说明文档文档格式.docx(9页珍藏版)》请在冰豆网上搜索。

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

当被事件唤醒后,系统恢复到lowpowerrunmode。

4、Active-Haltmode

在此模式下,除了RTC外,CPU和其他外设的时钟被停止。

系统唤醒是通过RTC中断、外部中断或是复位。

5、Haltmode

在此模式下,CPU和外设的时钟都被停止。

系统唤醒是通过外部中断或复位。

关闭内部的参考电压可以进一步降低功耗。

通过配置ULP位和FWU位,也可以6us的快速唤醒,不用等待内部的参考电压启动。

一、各个低功耗模式的代码实现

1、WAITmode

等待模式分为两种:

WFI和WFE。

1.1WFImode

当执行“wfi”语句时,系统就进入WFI模式,当中断发生时,CPU被从WFI模式唤醒,执行中断服务程序和继续向下执行程序。

通过置位CFG_GCR的AL位,使主程序服务完中断服务程序后,重新返回到WFI模式。

程序如下:

voidMcuwfi()

{

PWR_UltraLowPowerCmd(ENABLE);

//开启电源的低功耗模式

CLK_HSEConfig(CLK_HSE_OFF);

//关闭HSE时钟(16MHz)

#ifdefUSE_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);

#endif//切换时钟到LSI(38KHz)

wfi();

//进入WFI模式

#ifdefOnly_Interrupt//设置CFG_GCR的AL位,服务完中断后回到WFI模式

CFG->

GCR=CFG_GCR_AL;

#endif

}

1.2WFE

当执行“wfe”语句时,系统就进入WFE模式。

WFE有两种唤醒模式,一种是:

中断唤醒,一种是:

事件唤醒。

当中断唤醒时,当执行到wfe时,进入wfe模式休眠。

系统执行步骤如下:

进入WFE模式--->

有中断产生--->

系统唤醒--->

执行中断服务程序--->

继续休眠。

当事件唤醒时,当执行到wfe时,进入wfe模式休眠。

继续往下执行。

这种模式程序在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位进入校准低功耗模式

退出lowpowerrunmode的步骤如下:

1、通过重置CLK_REGCSR的REGOFF位进入主校准模式,延时等待主校准稳定。

2、通过设置FLASH_CR1的EEPM位来打开FLASH和EEPROM,延时等待FLASH和EEPROM打开。

3、屏蔽所有中断。

voidLPR_init(void)

/*SwitchtheclocktoLSEanddisableHSI*/

//PWR_UltraLowPowerCmd(ENABLE);

/*ConfigureeventforWAKEUPandFUNCTION,disabletheinterrupts*/

CLK_RTCClockConfig(CLK_RTCCLKSource_LSI,CLK_RTCCLKDiv_1);

//切换系统时钟

//到LSI

sim();

//屏蔽中断

LPR_Ram();

//CallinRAM//程序在RAM里执行

//if(lowpowerwait_flag==1)

//{

//lowpowerwait_flag=0;

//Switchontheregulator

//CLK->

REGCSR=0xb9;

//while(((CLK->

REGCSR)&

0x1)!

=0x1);

/*SwitchtheclocktoHSI*/

CLK_HSICmd(ENABLE);

ICKCR)&

0x02)!

=0x02);

CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);

//退出Lowpowerrunmode

//}

3、Lowpowerwaitmode

进入Lowpowerwaitmode模式是在MCU进入Lowpowerrunmode后执行wfe指令。

从Lowpowerwaitmode模式退出只能通过外部中断。

退出Lowpowerwaitmode模式后,CPU会返回到Lowpowerrunmode。

__ramfuncvoidLPR_Ram(void)

//voidLPR_Ram(void)

uint8_ti=0;

/*Toreduceconsumptiontominimal

SwithofftheFlash*/

FLASH->

CR1=0x08;

while(((CLK->

0x80)==0x80);

/*SwithofftheRegulator*/

CLK->

REGCSR=0x02;

0x01)==0x01);

if(lowpowerwait_flag==0)

while

(1);

Else//在此处进入Lowpowerwaitmode,进入WFE的配置。

/*SettriggeronGPIOBpin3*/

WFE->

CR2=0x01;

/*Waitforendofcounter*/

wfe();

EXTI->

SR1|=0x10;

SR2|=0x01;

CR2=0x00;

//退出Lowpowerwaitmode,进入Lowpowerrunmode

在Active-Halt模式下,主时钟和CPU,以及大部分的外设都停止了,只剩下LSE或LSI为一部分的外设提供时钟,能在Active-Halt模式运行的外设包括:

SWIM、beeper、IWDG、RTC和LCD。

进入Active-Halt模式,是通过halt语句。

退出是通过外部中断、RTC和复位。

参看代码如下:

voidMcuActive_Halt()

//Halt_Init();

RTC_Config(10000);

//初始化RTC/*

CLK_LSEConfig(CLK_LSE_OFF);

while((CLK->

ECKCR&

0x04)!

=0x00);

CLK_LSICmd(DISABLE);

ICKCR&

#endif*/

halt();

//进入Active-Halt模式}

在Haltmode下,系统时钟停止,CPU和所有的外设停止。

进入Haltmode,是执行halt

语句。

退出此模式,是通过外部中断和复位。

Haltmode和Active-Haltmode的区别是:

Active-Haltmode下的一些外设还在工作。

参考代码如下:

voidMcuHalt()

Halt_Init();

//关闭外设

//进入Halt模式

二、测试功耗

2.1、测试的各个模式下的功耗的测试步骤如下:

1、烧写不同模式下的代码,配置外部中断唤醒。

2、外部不需要的模块,停止供电。

3、把万用电串到电路中测试整个系统的电流。

2.2、各个部分的测试结果如下:

LOWpowermode进入方式手册值

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1