stm8l152有5种低功耗模式,wait mode, low power run mode, low power wait mode, active-halt mode, halt mode.

402 篇文章 169 订阅

1. stm8l152有5种低功耗模式,wait mode, low power run mode, low power wait mode, active-halt mode, halt mode.

 

2. 在halt模式下,cpu和外设时钟停止,可以通过外部中断或者复位来唤醒。

 

3. 本实验设计为:led灯亮,紧接着进入halt模式,有按键时,中断,快速唤醒,led灯灭。

 

 

 

     PWR_FastWakeUpCmd(ENABLE);  //快速唤醒使能

     //所有IO输出低电平

    GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);//推挽输出 低电平

    GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);

    GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);

    GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);

    

    

    //GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_Low_Slow);//GPIO初始化

    GPIO_Init(KEY_GPIO_PORT, KEY_GPIO_PINS, GPIO_Mode_In_PU_IT);//初始化按键,GPB6带上拉带中断输入

    

    

    

    EXTI_DeInit (); //恢复中断的所有设置 

    EXTI_SetPinSensitivity (EXTI_Pin_6,EXTI_Trigger_Falling);//外部中断6,下降沿触发,向量号14

    enableInterrupts();//使能中断

    

    PWR_UltraLowPowerCmd(ENABLE);//超低功耗

    while(1)

    {

        Delay(0x0FFF);

        GPIO_ResetBits (GPIOD,GPIO_Pin_4);

        halt();

    }

 

INTERRUPT_HANDLER(EXTI6_IRQHandler,14)

{

    /* In order to detect unexpected events during development,

       it is recommended to set a breakpoint on the following instruction.

    */

    EXTI_ClearITPendingBit (EXTI_IT_Pin6);

    GPIO_SetBits(GPIOD,GPIO_Pin_4);

    //Delay(0xfffffFFF);

}

http://news.eeworld.com.cn/mcu/ic479983.html

STM8L低功耗模式


       STM8L系列的一大特点便是低功耗,以STM8L051F3为例,该型号MCU拥有5种低功耗模式,分别为Wait, Low power run, Low power wait, Active-halt with RTC, Halt等。其中Halt模式下功耗为最低,本篇也将详细讨论该模式。
       这五种低功耗模式下,分别有不同的外设关闭和开启,低功耗模式下外设的开启意味着更多功耗的增加,可根据自身项目对功能和功耗要求进行合理选择,不同低功耗模式下,中断唤醒机制不大相同,如下图所示。
         图一
         图二
       以上两图可以从STM8L规格书中查询获得。可根据自身需求进入相应的低功耗模式。其中HALT功耗最低,这个模式将所有外设关闭,可以通过端口中断,I2C中断,SPI中断等方式唤醒。
需要注意:
       1、在此模式中无法通过串口唤醒,意味着若进入HALT,除非先通过端口中断或其他有效中断唤醒MCU,才能使用串口功能,如先使用端口中断唤醒MCU,端口中断中包含串口通信的函数。
       2、若想通过I2C唤醒并进行I2C通信需要主机连续发送两次STM8L的地址,主机发送第一个地址与STM8L I2C地址寄存器匹配唤醒STM8L,进入I2C中断后,主机发送第二个地址让STM8L I2C地址寄存器匹配,才能进入对应的发送或者接收的I2C通讯。STM8L唤醒时间为5us,所以理论上主机两次地址发送间隔应该为5us。
            在这里插入图片描述
       3、进入HALT模式前要把外设手动关闭,没有用到的引脚设置成推挽输出低,这会使功耗大幅下降,我曾使用STM8L051F3做了一个模块,低功耗模式下功耗约为2uA。(不知道有无更好的引脚处理方式,曾尝试过设置为输入,测得功耗很高)
       4、进入HALT模式前,要把总中断打开,否则可能导致无法唤醒。
       5、结束中断返回低功耗模式前需要关闭无用外设,配置无用引脚,清除中断标志,打开总中断。
       6、HALT()函数需要放置于while()循环中,否则可能唤醒MUC进入并退出中断后无法重新进入低功耗模式。

 

 while (1)
  {
     halt(); 
  }
  • 1
  • 2
  • 3
  • 4

      7、不能在中断中添加halt()函数,否则会造成系统死机。

https://blog.csdn.net/weixin_43278295/article/details/103537551

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值