//本人用开发板测试过,是可以实现WDT复位功能的
#include
#include "hc595.h"
#include "timer.h"
#include "pll.h"
/*******************************************************
* 名称:RstWdt()
* 功能:看门狗喂狗操作。
********************************************************/
void RstWdt(void)
{
WDFEED = 0xAA;
WDFEED = 0x55;
}
//led灯
void Init_led(void)
{
HC595_Init();
HC595_DATA |=(1<<16); Write595(); //灭灯
Timer1_DelaynUs(250000);
}
/*****************************************************
* 名称:main()
* 功能:初始 PLL 和定时器口及 WDT,然后开始先对 LED 进行亮灯控制,并进行喂狗处理;
* 并进入死循环,LED 灯持续点亮,等待 WDT 复位;如果取消喂狗,则 LED 灯闪烁。
******************************************************/
void main(void)
{
PLL_Init();
Init_Timer1();
Init_led(); //初始化LED灯
WDTC = 0x500000; // 设置WDTC,喂狗重装值
WDMOD = 0x03; // 设置并启动WDT
RstWdt(); // 进行喂狗操作
while(1)
{
HC595_DATA &=~(1<<16);Write595(); //亮灯
Timer1_DelaynUs(250000);
RstWdt(); // 进行喂狗操作 //***停止喂狗,如果灯闪烁,则说明有复位,否则没有复位
if(WDMOD_bit.WDTOF == 1)
{
WDMOD_bit.WDRESET = 1;
WDMOD_bit.WDTOF = 0;
}
}
}