版权声明:本文为博主原创文章,未经博主允许不得转载,联系邮箱[email protected] https://blog.csdn.net/w464960660/article/details/84067716
【背景】最近做低功耗项目,用到了一款STC的低成本,低功耗MCU,STC8A8K64S4A12,外设较丰富,主要是成本低,2-4元,且功耗很低,按官网介绍,掉电模式下<0.1uA,这种级别用于电池供电设备上太划算了。
【掉电唤醒定时器】:掉电模式下可以由外部中断唤醒,那么应用时可以设置掉电唤醒定时器睡眠时间->进入睡眠->醒后判断是否为自然唤醒或 外部中断等唤醒->根据唤醒原因发起不同动作。
判断唤醒原因依据:醒后读取WKTCH及WKTCL寄存器,若均为FF,则为自然唤醒,否则是被外部中断等唤醒(此时读出的值为睡眠时间)。
【掉电唤醒定时器设置源码】:其中32768仅是估计值,若获取准确频率值,可通过读取F8H ,F9H 内容获取出厂时记录的时钟频率。
void SetWakeUp(u16 SetTime)
{
SetTime = (u16)((32768UL * (u16)SetTime) / 16000); //计算计数次数
if(SetTime > 0) SetTime--;
WKTCL = (u8)SetTime;
WKTCH = (u8)(SetTime >> 8) | 0x80; //赋值WKTCH寄存器并允许内部停机唤醒定时器
}