| 本帖最后由 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”是置一的,那就证明在卡死发生前看门狗开始开着的,不存在关了看门狗再卡死的情况。
 
 各位论坛大神啊!你们显灵的时候到了啊!!
 
 不胜感激啊~~~~
 
 |