其實筆者沒有在項目中使用過看門狗這個功能,最近看了一些曆史上因為軟體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;
}//使看門狗無效