本帖最后由 xqy281 于 2016-1-26 20:11 编辑
首先交代一下情况:
晶振14.7456mhz
串口0波特率:115200
看门狗:已开启,32ms,时钟源fSMCLK
串口发送函数:
/******************************UART发送字节函数*************************/
void Uart0Putchar(uchar c)
{
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF=c;
IFG2 &= ~UCA0TXIFG;
}
void Usart0SendFrame(uchar *src, uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Uart0Putchar(src[i]);
}
}
好了开始说事了!
情况是这样的:不断的主动发送24字节,
同时串口中断也在接受24个字节,
间隔1s这样的操作,大概15分钟后卡死在了发送完成等待处的代码。
<b>while (!(IFG2&UCA0TXIFG));</b>
然后我测量了一下板子上的情况是:晶振还在振,定时器还在走,外部中断也是正的。
疑惑的地方有两个:
第一为什么这样子操作会发送卡死?
第二为什么开了看门狗却没有复位,特么老子就是为了这个问题才加看门狗的!!
注:看门狗是有作用的,我特意验证过了,而且卡死的时候查看寄存器“WDTTMSEL”是置一的,那就证明在卡死发生前看门狗开始开着的,不存在关了看门狗再卡死的情况。
各位论坛大神啊!你们显灵的时候到了啊!!
不胜感激啊~~~~
|