写了段串口接收的函数gprs_callback放到串口中断中,如下:
void gprs_callback(void)
{
if(GprsCnt<GRLEN)
GprsReceive[GprsCnt++] = LPC_UART2->RBR;
}
其中变量都是定义volatile的公共变量,但是发现程序极不稳定,常常运行一会就死机。
后来发现先把RBR送给一个局部变量,再送给公共变量就没问题了,如下:
void gprs_callback(void)
{
char b;
b = LPC_UART2->RBR;
if(GprsCnt<GRLEN)
GprsReceive[GprsCnt++] = b;
}
具体原因还不清楚。