双看门狗:独立看门狗和窗口看门狗
看门狗是我们常用到的针对CPU运行状态监测的手段之一。它本质上就是一个定时器,启动之后,需要不断的去刷新(我们通常把这个动作叫做“喂狗”),否则当看门狗的定时器减到规定的值后,就会引起系统复位。我们可以利用它来检测程序是否跑飞,并通过芯片复位,来让系统恢复到正常状态。 STM32 MCU提供两个看门狗,独立看门狗和窗口看门狗。
从独立看门狗的名字可以看出,它的特点是拥有独立于系统时钟的时钟。独立看门狗使用LSI时钟,这样使得它与系统时钟分离开,即使系统时钟出现故障,独立看门狗也能正常工作。 独立看门狗还支持“硬件看门狗”功能,通过选项字使能该功能后,MCU只要一上电,就会启动运行,开启对系统的保护。 窗口看门狗使用的是系统时钟,它的特点是必须在一个窗口时间内完成“喂狗”的动作,否则就会引起系统复位,所以窗口看门狗对“喂狗”的要求更精确了。 窗口看门狗还有一个EWI(early wakeup interrupt)的功能, 这个功能使能后,可以在窗口看门狗引起系统复位之前,先产生一个EWI中断,在这个中断里,给了系统软件一个机会去完成一些必要的安全动作或者数据保存的工作。 部分MCU系列的窗口看门狗也支持“硬件看门狗”的功能。 独立看门狗和窗口看门狗都支持在调试模式下“冻结”计数,以及在低功耗模式下继续工作的功能。 看门狗可以用在内核检测,时钟检测和电源检测中。 |