新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > LPC17XX串口接收數(shù)據(jù)死機(jī)現(xiàn)象解決辦法

LPC17XX串口接收數(shù)據(jù)死機(jī)現(xiàn)象解決辦法

作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
寫了段串口接收的函數(shù)gprs_callback放到串口中斷中,如下:

void gprs_callback(void)
{
if(GprsCntGprsReceive[GprsCnt++] = LPC_UART2->RBR;
}

本文引用地址:http://m.butianyuan.cn/article/201611/318048.htm

其中變量都是定義volatile的公共變量,但是發(fā)現(xiàn)程序極不穩(wěn)定,常常運(yùn)行一會(huì)就死機(jī)。

后來(lái)發(fā)現(xiàn)先把RBR送給一個(gè)局部變量,再送給公共變量就沒問題了,如下:

void gprs_callback(void)
{
char b;
b = LPC_UART2->RBR;
if(GprsCntGprsReceive[GprsCnt++] = b;
}

具體原因還不清楚。



評(píng)論


技術(shù)專區(qū)

關(guān)閉