本帖最后由 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里面显示的溢出了,但是我没有涉及数组和指针的操作,怎么会溢出啊,百思不得其解啊,烦请各位大侠帮我参谋参谋啊!!! |