STM8L051低功耗模式实现说明文档_第1页
STM8L051低功耗模式实现说明文档_第2页
STM8L051低功耗模式实现说明文档_第3页
STM8L051低功耗模式实现说明文档_第4页
STM8L051低功耗模式实现说明文档_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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都要停止

2、运行。电压被配置成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

3、在此模式下,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(ENA

4、BLE); /开启电源的低功耗模式 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_SYSCLKSour

5、ce_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有两种唤醒模式,一种是:中断唤醒,一种是:事件唤醒。当中断唤醒时,当执行到w

6、fe时,进入wfe模式休眠。系统执行步骤如下:进入WFE模式 -> 有中断产生 ->系统唤醒 ->执行中断服务程序 ->继续休眠 。当事件唤醒时,当执行到wfe时,进入wfe模式休眠。系统执行步骤如下:进入WFE模式 -> 有中断产生 ->系统唤醒 ->执行中断服务程序 ->继续往下执行 。2、 low power run mode这种模式程序在RAM中执行,EEPROM和FLASH是在IDDQ(低功耗模式),时钟切换到低速时钟。进入此模式的步骤如下:1、 进入RAM2、 切换系统时钟到LSE或LSI3、 关闭高速时钟、外设和ADC4、 屏蔽中断

7、5、 通过设置FLASH_CR1的EEPM位来关闭FLASH和EEPROM6、 等待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_HS

8、EConfig(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

9、); 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(lowpo

10、werwait_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_H

11、SI); CLK_SYSCLKSourceSwitchCmd(ENABLE); while (CLK->SWCR)& 0x01)=0x01); sim(); /退出Low power run mode /3、 Low power wait mode 进入Low power wait mode模式是在MCU进入Low power run mode后执行wfe指令。从Low power wait mode模式退出只能通过外部中断。退出Low power wait mode模式后,CPU会返回到Low power run mode。 _ramfunc voidLPR_Ram(void)

12、/voidLPR_Ram(void)#endif uint8_t i = 0;/* To reduce consumption to minimal Swith off the Flash */ FLASH->CR1 = 0x08; while(CLK->REGCSR)&0x80)=0x80);/* Swith off the Regulator*/ CLK->REGCSR = 0x02; while(CLK->REGCSR)&0x01)=0x01); if(lowpowerwait_flag=0) while(1); Else /在此处进入Low po

13、wer wait mode,进入WFE的配置。 /* Set trigger on GPIOB pin3*/ WFE->CR2 = 0x01; /*Wait for end of counter */ wfe(); EXTI->SR1 |= 0x10; EXTI->SR2 |= 0x01; WFE->CR2 = 0x00; /退出Low power wait mode,进入Low power run mode 4、 Active-Halt mode 在Active-Halt模式下,主时钟和CPU,以及大部分的外设都停止了,只剩下LSE或LSI为一部分的外设提供时钟,能在

14、Active-Halt模式运行的外设包括:SWIM、beeper、IWDG、RTC和LCD。进入Active-Halt模式,是通过halt语句。退出是通过外部中断、RTC和复位。参看代码如下:void McuActive_Halt() /Halt_Init(); PWR_UltraLowPowerCmd(ENABLE); RTC_Config(10000); /初始化RTC/* #ifdef USE_LSE CLK_LSEConfig(CLK_LSE_OFF); while (CLK->ECKCR & 0x04) != 0x00); #else CLK_LSICmd(DISABL

15、E); while (CLK->ICKCR & 0x04) != 0x00); #endif*/ sim(); halt(); /进入Active-Halt模式5、 Halt mode 在Halt mode下,系统时钟停止,CPU和所有的外设停止。进入Halt mode,是执行halt语句。退出此模式,是通过外部中断和复位。Halt mode和Active-Halt mode的区别是:Active-Halt mode下的一些外设还在工作。参考代码如下:void McuHalt() Halt_Init(); /关闭外设 sim(); /屏蔽中断 halt(); /进入Halt模式2、 测试功耗2.1、测试的各个模式下的功耗的测试步骤如下:1、 烧写不同模式下的代码,配置外部中断唤醒。2、 外部不需要的模块,停止供电。3、 把万用电串到电路中测试整个系统的电流。2.2、各个部分的测试结果如下:LOW power mode 进入方式手册值实际值wait modewait for interruptWFI55uA87uAwait for eventWFE55uA92uAlow powerlow power run modeSoftware Sequence5.4uA3.7uAlow power wait

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论