A.使用WDT作为常规定时器
-1.清SRCINT寄存器中的中断标志位;ClearPending(BIT_WDT);
-2.建立中断;pISR_WDT=(unsigned)watchdog_int;
+3.配置rWTCON,设定prescaler value和division factor,确定看门狗定时器的周期,暂不开启定时器和定时器中断;rWTCON=((PCLK/1000000-1)<<8)|(0x04)
-//取prescaler=PLCK/1000000-1,分频器分频值为49,分频因子为64,分辨率为64us,关定时器,关复位
-分辨率resolution的计算:t_watchdog =[divisor*(Prescaler value + 1)]/PCLK, Interval=t_watchdog*rWTDAT divisor为整数
-分辨率为divisor us(微秒)
+4.配置rWTDAT和rWTCNT;watchdog timer启动时,rWTDAT的值不会自动载入rWTCNT中,所以必须给rWTCNT初始化一个值
-The WTDAT register is used to specify the time-out duration.
-5.配置rWTCON,开启定时器和定时器中断;rWTCON|=(1<<5);此处没有使能复位功能
-6.清除watchdog中断屏蔽位; rINTMOD&=0xFFFFFDFF
B.使用WDT作为复位定时器
在上述步骤的第5步中,写入rWTCON|=(1<<5)|(1)即可在预定时间内复位
说明:实际开发过程中我经过测试发现对rWTCON的配置可以一步完成,无需分两步配置。