最近一个基于LPC2387的方案遇到了棘手的死机问题,板子的网口在客户那运行了十天左右会无法连通。这种现象很难复制,也没有规律。只能祭出大招看门狗,死机时候Ping不通那肯定网络线程Down掉了,那就在网络线程中喂狗吧。
看门狗驱动:
- //初始化watchdog
- void InitWDT(unsigned long t)
- {
- WDCLKSEL = 0; //use IRC as watchdog clock
- WDTC = t*1000000; // t*4/4MHZ
- WDMOD = 0x03;
- }
- void FeedWDT()
- {
- Disable_Int(); //禁止中断,以免喂狗操作被打断出现错误
- WDFEED = 0xAA;
- WDFEED = 0x55; //必须连续执行
- Enable_Int();
- }
注意事项:
初始玩看门狗后必须紧跟着喂一次狗,否则看门狗功能无法正常运行。 |