在嵌入式软件的设计里面常常会對产品的功耗有一定的要求所以对于设计一个合理的省电模块是十分有必要的。
对于一个产品而言可以将他的工作模式分成如下的几種模式
关于省电比例: 省电比列越大,单片机进入休眠的时间越长
对于省电模式可以用状态机来进行设置
单片机怎么进入省电模式的前提: 当前单片机没有主动要去完成的事情 ,而是等待在等待某件事件这个时候系统就可以进入休眠的模式,等待的事情可以通过中断来進行唤醒(从掉电模式进行退出)单片机也不能一直在休眠模式徘徊,要设定时间从省电模式退出(省电的时间由省电比例来进行确定)
//直接按给定的时间进行守候 // 关闭其他耗电的外设 // MCU休眠,终端将暂停在这边等待唤醒源唤醒,唤醒后继续执行 // 唤醒源有:WKT定时唤醒、按键中断 // 挂起不成功说明被按键中断唤醒了,终端被激活 // 完成一轮省电操作(唤醒 + 多个休眠时间片) // 当前一轮休眠操作还未结束需要繼续执行下一个休眠时间片, // 每一休眠时间片之间有一个固定的保护时间 //
省电的时候系统进入掉电模式在掉电的模式下面通过中断唤醒,使 CPU 从之前的环境继续向下执行在单片机唤醒的时候需要将之前的中断还原成原来的模式,如本来某个引脚的功能是串口为了能够在外部插入串口的时候唤醒需要将他的功能转换成引脚。当被唤醒的时候需要将当前引脚的功能进行复原即将引脚的功能还原成串口继续使用。
關于掉电模式和空闲模式的说明
单片机进入空闲模式的时候除了cpu处于休眠状态外,其余的硬件全部处于活动状态芯片中未涉及的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值
单片机在空闲模式下可由任何一个中断或者是硬件复位唤醒,值得注意的昰使用中断唤醒单片机,程序将从原来的停止的地方继续运行当使用硬件复位时,程序将从头开始执行
当单片机进入掉电模式(也叫休眠模式)外部晶振停止震动cpu,定时器串口全部停止工作,只有外部中断继续工作使单片机进入掉电模式的指令将成为休眠前单片機工作的最后一条指令,值得注意的是使用中断唤醒单片机,程序将从原来的停止的地方继续运行当使用硬件复位时,程序将从头开始执行