/* WATCHDOG TIMER DEFINITIONS */
// WDCTL bit definitions
#define WDINT0 0x01 // Interval, bit0
#define WDINT1 0x02 // Interval, bit1
#define WDINT 0x03 // Interval, mask
#define WDMODE 0x04 // Mode: watchdog=0, timer=1
#define WDEN 0x08 // Timer: disabled=0, enabled=1
#define WDCLR0 0x10 // Clear timer, bit0
#define WDCLR1 0x20 // Clear timer, bit1
#define WDCLR2 0x40 // Clear timer, bit2
#define WDCLR3 0x80 // Clear timer, bit3
#define WDCLR 0xF0 // Clear timer, mask
// WD timer intervals
#define WDTISH 0x03 // Short: clk * 64
#define WDTIMD 0x02 // Medium: clk * 512
#define WDTILG 0x01 // Long: clk * 8192
#define WDTIMX 0x00 // Maximum: clk * 32768
// WD clear timer patterns
#define WDCLP1 0xA0 // Clear pattern 1
#define WDCLP2 0x50 // Clear pattern 2
/* WATCHDOG TIMER DEFINITIONS */
#define WatchDogEnable(wdti) \
{ \
WDCTL = WDCLP1 | WDEN | (wdti & WDINT); \
WDCTL = WDCLP2 | WDEN | (wdti & WDINT); \
}
#define WatchDogFeed() \
{ \
WDCTL = WDCLP1; \
WDCTL = WDCLP2; \
}
使用方法;
// Start watchdog
WatchDogEnable(WDTIMX);
然后要喂狗的地方调用
WatchDogFeed()