在使用LM3S的过程中,它常常偶然死机。
程序中已经使能了内部看门狗,但死机后,看门狗并没有能够使它恢复正常。问题看起来似乎发生在程序的初始化阶段,并且故障点在初始化看门狗之前。
在不复位、断电的情况下保持故障状态,插上仿真器,通过分析,最终发现LM3S(LM3S2948)的UART中UARTFR寄存器的bit3,即busy位一直有效。并且即使在通过看门狗重启、软复位和甚至在仿真器里面重新下载程序并运行后,它都保持有效,而同时TXFE也有效。
同时也发现,程序在初始化串口前已经使能了看门狗,而看门狗也确实在按时重启单片机。但由于无法通过串口初始化,所以一直处于不能正常工作的状态。实际是不断地看门狗复位重启。
这就说明,由于某个LM3S内部的故障,导致LM3S出错后,即使用看门狗、软复位后也无法解除这个内部故障,从而死机。
解决办法只有一个:使用外部看门狗。 |