Standby模式
STM32有多种低功耗模式,Sleep,Stop,Standby,三种模式,Standby模式是功耗是最低的,同时MCU不保存大部分状态,唤醒后系统将重新开始运行。
IWDG
对于一些设计来说,不存在复位按键,因此需要配置看门狗防止系统死机,不然死机后需要拨电池,这样就不太人性化。
IWDG的时钟取决于LSI,同时IWDG开启后就不能被关闭,除非系统复位。
因此在Standby模式下,看门狗打开后,进入Standby模式下看门狗依旧处于工作状态,即马上引起系统复位,也就是退出了Standby模式,也就起不到关闭系统的作用。使用线路板实测的结果也是这样。
Workaround
正常运行时看门狗肯定是开启的状态,那么当进入Standby模式时,系统必然自动复位,在此时来判断是否为开机(此处用长按开机键作为开机信息,短按理论也行,只是成功率可能会存在问题)。如果没有开机信号,就再次进入Standby模式(同时使能唤醒管脚),否则开启看门狗进入正常运行状态。以这种形式来实现Standby与IWDG共同使用。当然如果关机时,长按开机键,关机操作同时也会失效。
流程图
现象
如果出现程序跑飞的情况,或喂狗不及时的情况,系统并不会重启,只会自动关机,但这种情况依旧可以解决死机不需要复位键的情形。