CC2430 串列埠通訊UART

2021-06-09 22:19:28 字數 1200 閱讀 9170

cc2430有兩個序列通訊介面usart0和usart1,本實驗採用第乙個介面。要實現的功能是在超級終端傳送資料到開發板,並且在lcd上顯示。

那麼,此實驗中uart中主要用的是接受功能。當u0csr.re=1時,在uart上資料接收就開始了。然後uart會在輸入引腳中尋找有效起始位,並且設定u0csr.active位為1,表明uart處於忙狀態。當檢測到有效起始位時,收到的位元組就傳入接收暫存器u0buf,同時u0csr.rx_byte位置1,表明接收資料完成。之後,會產生接收完成中斷,通過暫存器u0buf提供資料。當u0buf被讀出時,u0csr.rx_byte由硬體清零。

開始時,執行程式,發現鍵盤上的任何輸入,都沒有產生任何反應,之後發現程式一直停在uartgetkey()函式中的while (!urx0if )處,再觀察暫存器,發現urx0if一直為0,也就是說,在資料接收完成後,並沒有產生乙個中斷,於是程式停在這裡。為什麼呢?後來把晶元手冊看了一下,發現這個中斷預設是關閉的,若想要用,必須開啟。它的使能位在ien2暫存器2位,0關閉,1使能。如圖;

於是在原程式上還加一條語句:ien2=0x04;即可。

主函式如下:

void main(void)

printf((char*)"\n");

memset(buffer.text, ' ', buffer_size);

buffer.pointer = 0;

break;//若

有回車按下,將先前的資料在超級終端上顯示,並使lcd上的資料清空

case back_space:

if (buffer.pointer > 0)

break;//按下一次刪除鍵,lcd上就刪除乙個字元

case esc:

break;//本次通訊結束

default:

if (buffer.pointer < buffer_size)

break;//常規情況,以上功能鍵都未按下時,直接在lcd上顯示按下的資料

}lcdupdate(&buffer.text[0], &buffer.text[16]);//lcd顯示

}}char uartgetkey ()函式如下:

char uartgetkey (void)

超級中斷使用的是windows自帶的(在附件中),使用其他的可能會有誤差,還有一點,每次程式執行3~4次之後,超級終端就沒有了反應,需要再開啟一次才會有反應。(難道它裡面也有buffer長度限制?)

CC2430 串列埠使用詳解

為了完成課題,最近下定決心學習cc2430。網上的資料很多,重複的部分不做過多的介紹,沒有的部分做一下少許的補充,希望對大家有用!建議各位使用更新的cc2530,該晶元為cc2430的替代版本 全部 如下,先看一下整體!標頭檔案 include hal.h include stdio.h 函式宣告 ...

基於CC2430的串列埠無線模組的設計

1 引言 隨著現代科技的飛速發展,無線通訊技術成為人們日益關注的問題之一。在工業系統控制中。短距離無線通訊技術應用也越來越廣泛。水阻試驗是內燃機車恆功率負載試驗的主要方式之一,本文論述了在對內燃機車智慧型化水阻試驗系統資料採集部分的改進中,將原來的有線資料採集改為無線資料採集傳輸方式的無線模組設計。...

ARM裸機 FS2410串列埠通訊(UART)

一 開發環境 1 硬體平台 fs2410 2 主機 ubuntu 10.10 二 fs2410串列埠的原理圖 三 串列埠uart暫存器配置 1 配置txd0與rxd0 gph2 gph3 2 設定波特率 ubrdivn 3 設定傳輸格式 ulconn 4 選擇時鐘源與中斷方式 uconn 5 設定f...