MSP430 的许多示例程序的第一行如下:
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
他们为什么这样做呢?
MSP430 的许多示例程序的第一行如下:
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
他们为什么这样做呢?
看门狗定时器 (WDT) 默认开启,它在更复杂的应用程序中很有用,但会让很多新人绊倒。他们通常不会在他们的代码中服务 WDT 或包含一个中断服务程序 (ISR) 来处理 WDT 事件,因此,当他们的芯片不断复位时,他们会变得非常沮丧。此外,在大多数情况下,示例程序不会尝试演示 WDT,因此将其关闭。
编辑:看门狗定时器可能被命名为“死人开关”。它的默认行为是重置微控制器,除非固件定期让它知道一切运行正常。这被称为“喂狗”或“踢狗”。这样,如果您的固件卡在一个循环中或以其他方式停止按预期运行,则看门狗不会被馈送并将重置芯片(希望恢复到新的工作状态)。
您还可以将 WDT 用作周期性中断来执行其他任务,无论您能想到什么。您只需要编写相关的 ISR。
除了 Samuel 关于人们不小心绊倒 WDT 的观点之外,还有另一个重要的原因是为什么它最初应该被禁用。
即使您的应用程序通常能够正确重置计时器,它也可能无法在初始化代码期间这样做,原因有两个:
因此,最好的做法是首先禁用 WDT,即使您从未启用它。
如果您确实想使用它,您可以在打开中断之前立即重新启用它,作为初始化代码的最后一步。