看门狗的作用
看门狗(Watchdog Timer-WDT)分硬件看门狗和软件看门狗,用于程序跑飞时的系统复位。
程序跑飞
程序跑飞不是一种硬件故障,但它会引起死机。
5.1.3 看门狗是什么
简单的说是一个定时器,从程序开始运行的时候就开始计数,当计数满的时候就会使程序复位。所以要在计满之前让看门狗定时器的数值清零,俗称喂狗。如果在计满之前看门狗没有收到喂狗信号,则认为程序已经跑飞。
看门狗的两种功能
分别是看门狗模式和间隔定时器模式
这两种模式使用不同的中断向量,但是都是单源中断(所以中断标志位WDTIFG可以自动清零)
看门狗模式的中断是系统中断
间隔定时器的中断是可屏蔽中断
看门狗和间隔定时器使用相同的中断标志位:WDTIFG
这两种模式不能同时使用
看门狗模式具有时钟故障保护功能,但是间隔定时器模式没有
看门狗的默认复位时间
WDTIS默认为4h,其时钟信号默认为SMCLK,而SMCLK的时钟源默认为DCOCLKDIV,DCOCLKDIV的频率默认为1048576Hz,所以时间间隔默认为
时钟故障保护
为保证WDT在看门狗模式下能工作,如果SMCLK或ACLK作为WDT_A时钟源发生故障,WDT将自己的时钟自动调整为VLOCLK(注意这里是VLOCLK,而不是REFOCLK )
WDT_A提供故障安全时钟功能,确保在看门狗模式下不能禁止WDT_A的时钟。 这意味着LPM可能会受到WDT_A时钟选择的影响。
当WDT_A模块用于间隔定时器模式时,WDT A中没有用于时钟源的故障安全功能。
低功耗模式下的操作
用程序的要求和使用的时钟类型决定了WDT_A的配置方式。 例如,如果用户想要使用LPM3,则WDT_A不应配置为看门狗模式,其时钟源最初来自DCO,XT1为高频模式,XT2为SMCLK或ACLK。 在这种情况下,SMCLK或ACLK将保持启用状态,从而增加LPM3的当前消耗。
关闭看门狗的方法
//1. 正确的方法
WDTCTL = (WDTPW + WDTHOLD);
WDTCTL = WDTPW | WDTHOLD;
//2. 错误的方法
WDTCTL |= (WDTPW + WDTHOLD);//错误
|