1.看门狗定时:每隔一定时间不刷新定时器(不给狗粮),他将溢出(狗叫giao~~)。多数情况,定时器溢出将复位系统
2.看门狗用来处理软件或硬件错误的死机,保证自动复位。可用于特定情况下恢复
3.外部看门狗:可移植
4.使用看蒙之前,必须确信使用这种定时器将提高(不是减少)系统可靠性
5看门狗复位时间应该是一种很少发生且值得注意的时间。看门狗“其他一切都已经失效,必须让看门狗复位系统”
6.持续硬件故障情况,错误使用看门狗将会导致系统不断复位
/************************************************************
文件名: watchdog.c
程序员: LFD
版 本: V1.0
开发板:
设 备:
日 期: 2020/12/28
描 述:
思 路:
步 骤:
芯 片: STC12C5A60S2
晶 振: 11.0592MHZ
STC12C5A60S2看门狗的使用
根据上表设置WDT_CONTR = 0X25
// 0 0 1 0 0 1 0 1 EN_WDT使能看门狗 PS2 PS1 PS0 选为101 64分频 共2.2755s
也就是说2.2755s内喂狗,设备就不会复位
#include “reg52.h"
#define WATCHDOG_FEED() WDT_CONTR |= 0X10//宏定义喂狗操作 另CLR_WDT为1 看门狗重新看门
void watchdog_init();
void main(void)
{
powerOn(); // 上电空操作
watchdog_init();//看门狗初始化
P2 = 0XFF;//P2接LED 共阳
delay_ms(600);
P2 = 0x00;
BEEP = 1;
uart_send_byte('1');
for(;;)
{
delay_ms(3000); //当设置ms延时大概在1500以下时,有喂狗,设备不会复位(现象:灯常亮);设置在2000以上时,没有喂狗,设备不断复位(灯闪烁)
WDT_CONTR |= 0X10; //喂狗操作
}
}
/*************************************************
函数: watchdog_init();
描述: 看门狗初始化
其他:
*************************************************/
void watchdog_init()
{
/*
设置2.2755s看门狗
PS2 = 1; PS1 = 0; PS0 =1;也就是说2.2755s内喂狗,设备就不会复位
设置CLR_WDT = 1;看门狗清零
设置EN_WDT = 1;打开看门狗
WDT_CONTR |= 0011 0101
*/
WDT_CONTR = 0X55;
}
//--------------------------------------------------待续