當前位置:編程學習大全網 - 編程軟體 - Uart端口編程

Uart端口編程

60之後,指針uart_point將指向UART[59]的下壹個連續存儲器地址。假設UART[0]的地址為0x0000,編譯器會分配壹個連續的內存塊,即0x0000~0x0059。當指針值為0x0059,即指向最後壹個變量UART[59]時,加1會將指針值改為0x0060。這個內存地址不屬於UART,可能被編譯器分配給其他變量。如果妳通過指針改變它的值,很明顯妳的UART在運行時會出現壹些令人費解的問題,現象可能是多種多樣的,不可追蹤的。解決方法是定義壹個全局變量來表示接收到的字符數,在串口接收中斷中檢測接收到的字符數是否超標,當字符數達到規定值時如果有數據就丟棄多余部分,如下:

1:定義串行緩沖區的數量#define UARTCHARNUM 60

2.定義UART[UARTCHARNUM]和字符數指示變量inuartnum。

3.定義壹系列操作函數,比如返回當前接收的字符數,重置字符數。

4.檢查接收到的字符數是否達到串口接收中斷中的規定值,如果有,丟棄多余的字符。

其他聲明。。。

if(inuartnum & lt;UARTCHARNUM)

{

UART[inuartnum]= SBUF;

inuartnum++;

}

我就是這麽做的。我必須記得給內存變量指針添加壹個測試,以防止不可預知的錯誤。Keil C等編譯器暫時無法自動檢測這類錯誤,只能自己想辦法了。

  • 上一篇:星隆國際廣場周邊環境怎麽樣?生活便利嗎?
  • 下一篇:Android開發:如何動態更換APP圖標
  • copyright 2024編程學習大全網