因为用干电池供电,又需要超长待机了,成本又限制不能使用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