我的程序不加看门狗的时候运行正常,加了看门狗以后,有时上电复位不正常,过好几分钟程序才开始运行,有时程序压根就不运行。<br />int main (void)<br />{<br />uint8 i;<br /> IO_init();<br /> <br /> Uart0Init();<br /> Uart1Init();<br /> Time0Init();<br /> Time1Init(); <br /> PWM_init();<br /><br />。。。。。。<br /><br />Enable_WDT(27648000);//使能看门狗并设置复位参数<br /> IRQEnable ();<br /> FIQEnable ();<br />。。。。。。<br />}<br />/**********************************************************************************************************<br /> 使能看门狗(并设置复位参数)<br />**********************************************************************************************************/<br />void Enable_WDT(unsigned int wdtc)<br />{<br /> WDTC = wdtc;<br /> WDMOD = (1 << WDEN) | (1 << WDRESET);<br /> Reset_WDT();//必须在此复位看门狗一次(首次实际是启动看门狗)<br />}<br /><br />/**********************************************************************************************************<br /> 复位看门狗(首次实际是启动看门狗)<br />**********************************************************************************************************/<br />void Reset_WDT(void)<br />{<br /> uint32 tmp;//设置暂存器以取代Enable()/Disable()函数。<br /> <br /> tmp = VICIntEnable;//保护,相当与Disable()函数以代替关中断<br /> VICIntEnable = 0;//禁止所有FIQ和IRQ中断<br /> WDFEED = 0xaa; <br /> WDFEED = 0x55; <br /> VICIntEnable = tmp;//恢复,相当与Enable()函数以代替开中断 <br />}<br /> |
|