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