1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第,12,章,看门狗定时器,12.1,看门狗定时器概述,12.2 WD,操作,12.3 WD,控制寄存器,WD,用于监视软件和硬件的运行,在,CPU,混乱时(如软件死循环或跑飞),完成系统的复位,从而提高系统的可靠性。,12.1,看门狗定时器概述,WD,结构框图如下图,所有寄存器都是,8,位的。具有如下特征:,(1)8,位,WD,计数器,上溢时产生一个系统复位信号。,(2)6,位的自行计数器,用于,WD,预定标,共,6,种选择。,(3),一个复位钥匙寄存器(,WDKEY),也称为关键字寄存器。当一个
2、55h,值后紧随着一个,AAh,值写入,WDKEY,时,则,WD,计数器清零,当不正确的值写入时,则产生一个复位信号。,(4)3,个,WD,检验位。若,WD,定时器失效,则启动系统复位。,(5),系统复位后,,WD,定时器就自动启动。,2,WD,模块结构框图,WDCLK=CLKOUT/512=CPUCLK/512,3,WD,模块结构框图,4,12.2 WD,操作,1.WD,的时钟,WD,的时钟,WDCLK,是一个低频时钟,由,CPU,的输出时钟,CLKOUT,提供。,WDCLK=CLKOUT/512=40MHz/512=78 125Hz,2.,定时器的悬挂,因为,WDCLK,的时钟是由,CL
3、KOUT,分频产生的,当,CPU,被挂起时(即,CPU,进入,HALT,低功耗模式),,WDCLK,被停止。,5,12.3 WD,控制寄存器,共有,3,个寄存器控制着,WD,的操作:,(1)WD,计数寄存器(,WDCNTR),8,个位为,8,位,WD,计数器的值,只读。,向,WD,复位关键字寄存器写入正确的序列会清除,WDCNTR,且可阻止系统复位,但并不会清除自行计数器。,(2)WD,复位关键字寄存器(,WDKEY),,,也称为钥匙寄存器,当写一个,55h,后紧随写入一个,AAh,,则清除,WDCNTR,。任何的其他值都会引起系统复位。,位,7-0,:这些只写数据位为,8,位复位关键字值。,
4、6,(3)WD,定时器控制寄存器(,WDCR),本寄存器包含用于看门狗配置的如下控制位:,WD,禁止位;,WD,标志位;,WD,检验位(,3,个);,WD,预定标选择位,(3,个)。,格式如下:,位,7,:,WDFLAG,,看门狗标志位。该位标识,WD,定时器是否产生了一个系统复位。,0,:表明自上次清除该位后,,WD,定时器还没有产生复位。,1,:表明自上次清除该位后,,WD,定时器已经产生了复位。,7,位,6,:,WDDIS,,看门狗禁止位。仅当,SCSR2,寄存器的,WD OVERRIDE,位为,1,时,该位才能被写。,0,:看门狗被使能。,1,:看门狗被禁止。,位,5-,位,3,:,W
5、DCHK2-WDCHK0,,看门狗检验位(,3,个)。当向,WDCR,控制寄存器写时,这三位必须被写为,101,,否则产生系统复位。,位,2-,位,0,:,WDPS2-WDPS0,,看门狗预定标选择位。这些位决定了看门狗的溢出频率,如下表所示。,8,9,禁止看门狗定时器汇编语言程序。,LDP#0E0H;,数据页指向,7000H707FH,SPLK#68H,WDCR;,禁止看门狗,D6=WDDIS=1,禁止看门狗定时器,C,语言程序。,*,WDCR=0 x0068;/,禁止看门狗,10,复位看门狗汇编语言宏指令,KICK_DOG.macro,;复位看门狗,LDP#0E0H,SPLK#5555H,WDKEY,SPLK#0AAAAH,WDKEY,LDP#0H,.,endm,复位看门狗,C,语言函数,void,kick_dog(void,)/,复位看门狗,*WDKEY=0 x5555,*WDKEY=,0 xAA,11,思考题与习题,看门狗是如何工作的?,如何使用看门狗定时器?,12,