CC430串口自收自发时间久了进入rest_vector中

2019-08-01 16:01发布

本帖最后由 yufanjoy 于 2014-11-14 14:12 编辑

在调试CC430串口的时候遇到个问题:
用串口自收自发:收到什么就发什么,用的是中断处理的,具体程序如下:

void main( void )
{  
   
     Initucs();   //初始化系统时钟
   
    WDTCTL = WDTPW + WDTHOLD;
    SetVCore(2);           //提升内核电压 PMM Core Voltage 2 (1.75V)   Increase PMMCOREV level to 2 for proper radio operation                  
   
    ResetRadioCore();  //复位cc430 里面的Radio   
    InitRadio();             //初始化CC430 的Radio 模块:主要是开启PMM的高能量消耗允许,配置CC430的Radio寄存器,设置发射功率等。
    InitLeds();              //初始化按键和LED
    InitUart();              //初始化串口
    ReceiveOn();         //开启RF接收
   
    _EINT();      //开启全局中断
   
    while (1)
    {      
        __no_operation();           
    }      
}

#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
  switch(__even_in_range(UCA0IV,4))
  {
  case 0:break;                             // Vector 0 - no interrupt
  case 2:                                   // Vector 2 - RXIFG
    while (!(UCA0IFG&UCTXIFG));             // USCI_A1 TX buffer ready?
    UCA0TXBUF = UCA0RXBUF;                  // TX -> RXed character
    break;
  case 4:break;                             // Vector 4 - TXIFG
  default: break;
  }  
}

主函数就是对串口初始化而已,并未有其他关于数组和指针的操作,程序的主要是要实现串口接收和发送,所以就简单写了下串口初始化和串口数据处理代码,用串口调试助手每隔80ms发送数据,程序在收到数据后就自动发到串口调试助手。
程序刚开始运行的半个多小时时间内,跑的很正常,可以自收自发,但是要是时间再跑长点,程序就进入?reset_vector段里面去了,调试log里面显示的溢出了,但是我没有涉及数组和指针的操作,怎么会溢出啊,百思不得其解啊,烦请各位大侠帮我参谋参谋啊!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。