stm8s 低功耗模式

因为用干电池供电,又需要超长待机了,成本又限制不能使用stm8l,所以开启低功耗之旅

1.元器件选型

  • 挑选低功耗的元器件,一定要关注工作电流
  • led 一定要高电平导通,不然的话,默认状态拉高很费电
  • 元器件尽量选择共阴解法,更省电

2.主时钟频率

  • 频率和功耗是成正比的,选择试用的最低晶振
  • 能不开的功能尽量不开

下面是对应的功耗表

在这里插入图片描述

在这里插入图片描述

ADC最费电

3.合理使用低功耗模式

主要有一下几种

  • 等待模式
  • 活跃停机模式
  • 停机模式

下面是对比

等待模式

在这里插入图片描述

使用asm(“WFI”)进入
会被各种中断激活
在这里插入图片描述

活跃停机模式

在这里插入图片描述

AWU是用来当MCU进入低功耗的活跃停机(Active Halt)模式时提供一个内部的唤醒时间基准。该时间基准的时钟是由内部的低速RC振荡器时钟(LSI)或者通过预分频的HSE晶振时钟来提供的。

配置关闭MVR 和 断掉flash 可以达到10-20ua

通过寄存器FLASH_CR1 AHALT配置
在这里插入图片描述
代码

FLASH_CR1|= 0x04;

寄存器CLK_ICKR 的REGAH 位配置关闭 MVR
在这里插入图片描述

在这里插入图片描述

代码:

CLK_ICKR|= 0x2C;

唤醒时间设置:
在这里插入图片描述

自己选择, 时间不是很准
AWU初始化

void AWU_init()
{
  CLK_ICKR|= 0x2C;
  FLASH_CR1|= 0x04;
  AWU_APR = 0x39;
  AWU_TBR = 0x0A;
  AWU_CSR1 = 0x10;
}

大概200ms
使用 asm(“HALT”);触发

停机模式
在这里插入图片描述

这个更低,需要用外部中断或者复位唤醒,没法自己活过来,
具体的可以看这个文章
https://blog.csdn.net/freeape/article/details/47008805

发布了65 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_36628778/article/details/99618874