kinglzq 发表于 2018-6-6 10:21:31

STM8L15x 低功耗运行模式疑问

1)根据手册步骤,进入此模式需要7个步骤:步骤3. Jump to RAM;这个步骤怎么实现?

2)退出此模式:没法退出

请问一下,官方有相关例程没?

qianqiandenian 发表于 2018-6-6 14:56:41

1
http://bbs.21ic.com/icview-176724-1-1.html

qianqiandenian 发表于 2018-6-6 14:57:38

1

ssqk 发表于 2018-7-25 22:01:29

我也在学习这块

zhdzhd-174422 发表于 2018-8-1 09:26:01

low power run mode
这种模式程序在RAM中执行,EEPROM和FLASH是在IDDQ(低功耗模式),时钟切换到低速时钟。

进入此模式的步骤如下:

进入RAM
切换系统时钟到LSE或LSI
关闭高速时钟、外设和ADC
屏蔽中断
通过设置FLASH_CR1的EEPM位来关闭FLASH和EEPROM
等待FLASH和EEPROM关闭
通过设置CLK_REGCSR的REGOFF位进入校准低功耗模式
退出low power run mode的步骤如下:

通过重置CLK_REGCSR的REGOFF位进入主校准模式,延时等待主校准稳定。
通过设置FLASH_CR1的EEPM位来打开FLASH和EEPROM,延时等待FLASH和EEPROM打开。
屏蔽所有中断。
程序如下:

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

    CLK_SYSCLKSourceSwitchCmd(ENABLE);

    while (((CLK->SWCR)& 0x01)==0x01);

    sim();                                 //退出Low power run mode



//}

}

wolfgang2015 发表于 2018-8-1 15:25:11

之前参加过ST的低功耗培训,虽然用的是L476,不过推荐你了解一下;
https://www.stmcu.org.cn/module/forum/thread-612479-1-1.html

低功耗对MCU的控制程序逻辑要很费心的。

feixiang20 发表于 2018-8-2 02:08:19

简单地来说,就是:

1)wait(等待模式):时钟关闭、外设可用。通过中断、外部中断、复位,能退出本模式。

2)Active-halt(活跃停机模式):时钟关闭、外设关闭、RTC开启。通过RTC中断、外部中断、复位,能退出本模式。

3)Halt(停机模式)(功耗最低):时钟关闭、外设关闭。通过外部中断、复位,能退出本模式。
页: [1]
查看完整版本: STM8L15x 低功耗运行模式疑问