看门狗功能能够有效解决程序意外跑飞的问题。程序正常运行时,及时执行喂狗操作,以避免看门狗复位。程序一旦跑飞,往往会陷入某个非法的死循环里,因为没有执行正常的喂狗操作,所以看门狗定时器很快溢出,从而导致系统复位。于是程序从头重新开始,而不是永远死在某个地方。 看门狗正确的应用场合应该是:在不用看门狗的情况下,硬件和软件经过反复调试已经通过,而在考虑到实际应用环境中出现的强烈干扰可能造成单片机程序跑飞的情况,再加入看门狗功能以提高整个系统的工作可靠性。可见,看门狗只不过是万不得已的最后手段而已。 但是,有相当多的工程师,尤其是经验不多者,在调试自己的系统时一出现程序跑飞,就马上引入看门狗来解决,而没有真正去思考程序为什么会跑飞。实际上,程序跑飞的大部分原因是程序本身存在bug,或者已经暗示硬件电路可能存在故障,而并非是受到了外部的干扰。如果试图用看门狗功能来“掩饰”这类潜在的问题,则是相当不明智的,也是危险的,因为潜在的系统设计缺陷可能一直伴随着您的产品最终到用户手中。 综上,我建议:在调试自己的系统时,先不要使用看门狗,待完全调通已经稳定工作了,最后再补上看门狗功能。 |