通常情況下都會將串口的初始化語句寫進(jìn)一個初始化函數(shù)Uart_Init()中:
1 void Uart_Init(int baud)
2 {
3 int i;
4 rUFCON0 = 0x0; //UART FIFO disable
5 rULCON0 = 0x3; //關(guān)閉紅外傳輸模式而用Normal模式,No parity,1 stop,每幀8bits數(shù)據(jù)位
6 rUCON0 = 0x805; //先看[11:10]=10,UART時鐘源為PCLK,那么[15:12]就沒用了,置零,接收與發(fā)送的中斷類型均為Pulse,禁止接收超時中斷的產(chǎn)生,禁止接收錯誤中斷的產(chǎn)生
7 //不采用loopback工作模式而采用normal模式,不發(fā)送break signal而采用normal transmit
8 rUBRDIV0=( (int)(50000000/16./baud+0.5) -1 ); //Baud rate divisior register 0
9 for(i=0;i<100;i++);//延時
10 }
串口發(fā)送字節(jié)Byte的函數(shù)Uart_SendByte():
1 void Uart_SendByte(int data)
2 {
3
4 if(data=='n')
5 {
6 while(!(rUTRSTAT0 & 0x2));
7
8 WrUTXH0('r');
9 }
10 while(!(rUTRSTAT0 & 0x2)); //Wait until THR is empty.
11
12 WrUTXH0(data);//一個宏
13 }
上面程序中的WrUTXH0()是一個宏,定義在另外一個文件中,形式為:
#define WrUTXH0(ch) (*(volatile unsigned char *)0x50000020)=(unsigned char)(ch)
所以WrUTXH0(data)的作用就相當(dāng)于:
1 #define rUTXH0 (*(volatile unsigned *)0X50000020)
2 rUTXH0=data;
這兩者功能是等價的。
串口發(fā)送字符串的函數(shù)Uart_SendString()實質(zhì)就是不斷調(diào)用Uart_SendByte()函數(shù),將字符串一個字節(jié)一個字節(jié)的發(fā)出去:
1 void Uart_SendString(char *pt)
2 {
3 while(*pt)
4 Uart_SendByte(*pt++);
5 }
串口打印函數(shù)Uart_Printf()就是調(diào)用發(fā)送字符串的函數(shù):
1 void Uart_Printf(char *fmt,...)
2 {
3 va_list ap;
4 char str[255];
5
6 va_start(ap,fmt);
7 vsprintf(str,fmt,ap);
8 Uart_SendString(str);
9 va_end(ap);
10 }
Uart_GetKey():
1 char Uart_GetKey(void)
2 {
3 if (rUTRSTAT0 & 0X01) //接收是否完畢 =1結(jié)束
4 return rURXH0;
5 else
6 return 0;
7 }
上一篇:Cortex-M3學(xué)習(xí)LPC1768 - 按鍵實驗
下一篇:S3C2440串口通信基本功能的代碼(注釋+學(xué)習(xí))
推薦閱讀
史海拾趣
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 基于AVR EVK1105的移動遠(yuǎn)程桌面多媒體設(shè)備
- 基于AVR EVK1105平臺的兒童伴睡寶方案設(shè)計
- 基于AVR的太陽能高速公路智能電子顯示屏設(shè)計
- 基于MIPS32設(shè)計的智能電網(wǎng)家庭用電監(jiān)控系統(tǒng)
- 基于Cerebot MX4開發(fā)板的家用智能監(jiān)控系統(tǒng)整體方案設(shè)計
- 確定運算放大器輸出驅(qū)動能力的方法分析
- 寵物狗無線感知交互系統(tǒng)軟硬件設(shè)計
- stm32晶振不起振的原因 stm32單片機(jī)的基本工作原理
- 從三個層次來介紹用于機(jī)器人主控板的設(shè)計思想
- 人工智能在汽車行業(yè)中的應(yīng)用
- 麥格納集成式艙內(nèi)感知系統(tǒng) 引領(lǐng)車輛安全創(chuàng)新
- 2025世界人工智能大會上的各種機(jī)器人
- 際上導(dǎo)航:高精度組合定位感知技術(shù)在智能輔助駕駛中的應(yīng)用
- 量產(chǎn)元年的人形機(jī)器人,要破局C端?
- 上半年賺304億元的寧德時代,給出固態(tài)電池量產(chǎn)時間表
- 新泗威車載后排航空座椅控制顯示器 | 申報2025第七屆金輯獎最佳技術(shù)實踐應(yīng)用獎
- L3 智駕,需要殺手級座艙
- 2025動力電池中場戰(zhàn)局,正力新能“三化策略”應(yīng)戰(zhàn)
- 智能手機(jī)共存解決方案協(xié)同合作使用共用天線
- ST MEMS傳感器交流論壇正式上線啦!
- Microchip 喊你快來打造你的理想型單片機(jī),智能門鈴、百元京東卡等【80份】好禮等你贏!
- 泰克MSO6B情報站—電源紋波測量指北
- 有獎直播:ST 基于IO-Link的狀態(tài)監(jiān)控和可預(yù)測性維護(hù)方案
- PI自研氮化鎵助力實現(xiàn)更小、更輕、更高效的充電器 看視頻好禮送!
- 下載信息娛樂系統(tǒng)精品文章,贏【米家臺燈、小米保溫杯、米家藍(lán)牙溫濕計】,開啟MPS汽車技術(shù)進(jìn)階之旅!
- 樂享MPLAB Xpress云端IDE,開心答題贏禮品
- 有獎直播|如何借助Mentor Xpedition AMS對汽車CAN總線進(jìn)行仿真優(yōu)化分析?
- 【EEWORLD第三十屆】2011年09月社區(qū)明星人物揭曉!
- 華為鴻蒙HarmonyOS再增加300+開源組件
- 蘋果美國第三方維修供應(yīng)商被指為“血汗工廠”
- 摩托羅拉Edge 20系列三款機(jī)型高清諜照解密
- 蘋果iOS/iPadOS 15開發(fā)者預(yù)覽版的Beta4(19A5307g)發(fā)布
- 微軟Surface新專利解密,類似蘋果iPad妙控鍵盤設(shè)計
- Intel機(jī)器編程代碼相似度系統(tǒng),讓每個人都有能力創(chuàng)建軟件
- 2020ChinaJoy盛大開幕,享受極致數(shù)字娛樂新體驗
- 英特爾品牌價值已經(jīng)增長到395億美元
- 恭喜赫聯(lián)電子榮獲“2020匠心質(zhì)造-杰出企業(yè)獎”
- 注重隱私保護(hù)的藍(lán)牙腕帶,跟蹤新冠肺炎密切接觸者