你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8L15x 低功耗运行模式疑问

[复制链接]
kinglzq 提问时间:2018-6-6 10:21 /
1)根据手册步骤,进入此模式需要7个步骤:步骤3. Jump to RAM;这个步骤怎么实现?

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

请问一下,官方有相关例程没?
收藏 1 评论7 发布时间:2018-6-6 10:21

举报

7个回答
qianqiandenian 回答时间:2018-6-6 14:56:41

点评

嗯??  发表于 2018-6-6 15:18
qianqiandenian 回答时间:2018-6-6 14:57:38
1
ssqk 回答时间:2018-7-25 22:01:29
我也在学习这块
zhdzhd 回答时间: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



//}

}

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

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

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

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

feixiang20 回答时间:2018-8-2 02:08:19
简单地来说,就是:

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

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

3)Halt(停机模式)(功耗最低):时钟关闭、外设关闭。通过外部中断、复位,能退出本模式。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版