初始化看门狗不是可有可无的步骤,它直接影响系统的鲁棒性。
想象一下,你的单片机上电后,先跑初始化代码:配置时钟、外设、GPIO等。
这段时间如果出问题,比如外设配置出错导致死锁,系统就卡在那儿了。如果看门狗没初始化,它就帮不上忙。
反之,如果早早初始化看门狗,它就能在初始化阶段就提供保护。
喂狗操作也很简单,通常就是写一个特定寄存器值重置计数器。
但别小看这个,喂狗频率要和系统负载匹配,超时时间一般设在5-30秒之间,太短容易误复位,太长又保护不及时。
看门狗应该在上电后、系统初始化序列的早期就配置并启用。
为什么?因为初始化代码本身就可能出错,早启用就能覆盖更多潜在风险。
在main函数开头,或者甚至在启动汇编代码中(如果你的MCU支持)。
你可以在SystemInit()后紧接着初始化IWDG。
别配置完就扔那儿不管,先喂一次狗,确保计数器从头开始。
比如配置时钟后喂一次,外设初始化后喂一次。这样,整个启动过程都在保护下。
但也不是一刀切。有些MCU如某些Microchip的PIC系列,看门狗可以配置为复位后自动启用。 如果你的芯片支持,就优先用这个,省事儿还安全。另外,在调试模式下,别忘了禁用看门狗,否则JTAG或SWD调试时容易被复位干扰。
|