其实笔者没有在项目中使用过看门狗这个功能,最近看了一些历史上因为软件Bug而导致的严重事件,笔者个人觉得看门狗这个功能还挺重要的,如果读者有机会用到,可以尝试下面的函数,具体函数的功能笔者还没测试过,是根据2812的看门狗改过来的。
DSP_28377D的看门狗代码如下:
void ServiceDog(void)
{
EALLOW;
WdRegs.WDKEY.bit.WDKEY = 0x0055;
WdRegs.WDKEY.bit.WDKEY = 0x00AA;
EDIS;
}
void EnableDog(void)
{
EALLOW;
WdRegs.WDCR= 0x0028; //0010 1000
EDIS;
}//使能看门狗,只有在SCSR寄存器中的WDOVERRIDE位置1时,WDCR.WDDIS才可以更改
void DisableDog(void)
{
EALLOW;
WdRegs.WDCR= 0x0068;//0110 1000
EDIS;
}//使看门狗无效
DSP_28069的看门狗代码如下:
void ServiceDog(void)
{
EALLOW;
SysCtrlRegs.WDKEY.bit.WDKEY = 0x0055;
SysCtrlRegs.WDKEY.bit.WDKEY = 0x00AA;
EDIS;
}
void EnableDog(void)
{
EALLOW;
SysCtrlRegs.WDCR= 0x0028; //0010 1000
EDIS;
}//使能看门狗,只有在SCSR寄存器中的WDOVERRIDE位置1时,WDCR.WDDIS才可以更改
void DisableDog(void)
{
EALLOW;
SysCtrlRegs.WDCR= 0x0068;//0110 1000
EDIS;
}//使看门狗无效