版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 計算機科學(xué)與技術(shù)學(xué)院</p><p><b> 課程設(shè)計報告</b></p><p> 2010— 2011學(xué)年第 1 學(xué)期</p><p> 課程名稱:ARM原理與C語言程序設(shè)計 </p><p> 設(shè)計題目:串 口 通 信
2、 </p><p> 學(xué)生姓名: </p><p> 學(xué) 號: </p><p> 專業(yè)班級:計算機07—2班 </p><p> 指導(dǎo)教師:
3、 </p><p> 2010 年 11 月 23 日</p><p><b> 目錄</b></p><p><b> 摘要1</b></p><p> 第1章 設(shè)計要求和目的2</p><p><b&g
4、t; 1.1設(shè)計要求2</b></p><p><b> 1.2設(shè)計目的2</b></p><p> 第2章 設(shè)計方案3</p><p><b> 2.1設(shè)計方案3</b></p><p> 2.1.1S3C2410X 串行通訊(UART)單元3</p>
5、<p> 2.1.2 波特率的產(chǎn)生3</p><p> 2.1.3 UART 通信操作3</p><p> 2.1.4 UART 控制寄存器4</p><p> 2.1.5 UART 初始化代碼6</p><p> 2.1.6 RS232 接口電路8</p><p> 2.1.7串口接
6、收設(shè)置8</p><p> 2.1.8調(diào)試運行結(jié)果9</p><p><b> 2.2硬件裝置9</b></p><p> 2.2.1Embest EduKit-III 實驗平臺9</p><p> 2.2.2ULINK2 仿真器套件,PC 機10</p><p> 2.3 軟
7、件設(shè)計10</p><p> 2.3.2程序代碼設(shè)計11</p><p><b> 總結(jié)與體會12</b></p><p><b> 參考文獻13</b></p><p><b> 摘要</b></p><p> 【摘要】 ARM 微
8、處理器因其卓越的低功耗、高性能在 32 位嵌入式應(yīng)用中已位居世界第一,是高性能、低功耗嵌入式處理器的代名詞,為了順應(yīng)當(dāng)今世界技術(shù)革新的潮流,了解、學(xué)習(xí)和掌握嵌入式技術(shù),就必然要學(xué)習(xí)和掌握以ARM 微處理器為核心的嵌入式開發(fā)環(huán)境和開發(fā)平臺,這對于研究和開發(fā)高性能微處理器、DSP 以及開發(fā)基于微處理器的SOC 芯片設(shè)計及應(yīng)用系統(tǒng)開發(fā)是非常必要的。前一段時間我學(xué)習(xí)了ARM原理和C語言程序設(shè)計的 ,初步的掌握了S3C2410X處理器和PC機結(jié)合
9、,這里我簡單介紹S3C2410X 處理器 UART 相關(guān)控制寄存器的使用熟悉ARM 處理器系統(tǒng)硬件電路中 UART 接口的設(shè)計方法。掌握ARM 處理器串行通信的軟件編程方法。</p><p> 【關(guān)鍵字】 Embest EduKit-III 實驗平臺;S3C2410X 串行通訊(UART)單元;波特率;UART 控制寄存器;RS232 接口;串口通信;串口接收</p><p> 第1
10、章 設(shè)計要求和目的</p><p><b> 1.1設(shè)計要求</b></p><p> 設(shè)計簡單的程序使用S3C2410X處理器URAT相關(guān)控制器及PC機成功完成串口通信,并掌握串口通信的原理及相關(guān)寄存器的初始化。</p><p><b> 1.2設(shè)計目的</b></p><p> 《ARM
11、原理和C語言程序設(shè)計》是計算機專業(yè)硬件方向?qū)W生的專業(yè)限選課程,本次課程設(shè)計主要是檢驗學(xué)生是否掌握相關(guān)專業(yè)課程知識,充分調(diào)動學(xué)生的積極性和創(chuàng)造性,重視學(xué)生實際動手能力的培養(yǎng)。</p><p> 通過本課程設(shè)計是學(xué)生加深理解鞏固課堂教學(xué)和平時實驗內(nèi)容,是學(xué)生了解S3C2410X處理器URAT相關(guān)控制器的使用,熟悉ARM處理器系統(tǒng)硬件電路中UART接口的設(shè)計方法,掌握ARM處理器串行通信的軟件編程方法。強化學(xué)生的知識
12、時間意識、提高動手能力。</p><p><b> 第2章 設(shè)計方案</b></p><p><b> 2.1設(shè)計方案1</b></p><p> 2.1.1S3C2410X 串行通訊(UART)單元 </p><p> S3C2410X UART 單元提供三個獨立的異步串行通信接口,皆可
13、工作于中斷和DMA 模式。使用系統(tǒng)時鐘最高波特率達230.4Kbps,如果使用外部設(shè)備提供的時鐘,可以達到更高的速率。每一個UART 單元包含一個 16 字節(jié)的FIFO,用于數(shù)據(jù)的接收和發(fā)送。 </p><p> S3C44B0X UART 支持可編程波特率,紅外發(fā)送/接收,一個或兩個停止位,5bit/6bit/ 7bit/ 或 8bit 數(shù)據(jù)寬度和奇偶校驗。</p><p> 2.1
14、.2 波特率的產(chǎn)生 </p><p> 波特率由一個專用的UART 波特率分頻寄存器(UBRDIVn )控制,計算公式如下: </p><p> UBRDIVn = (int)(ULK/(bps x 16) ) –1 </p><p> 或者UBRDIVn = (int)(PLK/(bps x 16) ) –1 </p><p> 其
15、中:時鐘選用 ULK 還是 PLK 由 UAR控制寄存器 UCONn[10]的狀態(tài)決定。如果 UCONn[10]=0,用PLK 作為波特率發(fā)生,否則選用ULK 做波特率發(fā)生。UBRDIVn 的值必須1到(-1)之間。</p><p> 例如:ULK 或者PLK 等于40MHz,當(dāng)波特率為 115200 時, </p><p> UBRDIVn = (int)(40000000/(11
16、5200 x 16) ) -1 </p><p> = (int)(21.7) -1 </p><p> = 21-1 = 20</p><p> 2.1.3 UART 通信操作 </p><p> 下面簡略介紹 UART 操作,關(guān)于數(shù)據(jù)發(fā)送,數(shù)據(jù)接收,中斷產(chǎn)生,波特率產(chǎn)生,輪流檢測模式,紅外模式和自動流控制的詳細介紹,請參照相關(guān)教
17、材和數(shù)據(jù)手冊。 </p><p> 發(fā)送數(shù)據(jù)幀是可編程的。一個數(shù)據(jù)幀包含一個起始位,5 到8 個數(shù)據(jù)位,一個可選的奇偶校驗位和 1 到2 位停止位,停止位通過行控制寄存器ULCONn 配置。 </p><p> 與發(fā)送類似,接收幀也是可編程的。接收幀由一個起始位,5 到8 個數(shù)據(jù)位,一個可選的奇偶校驗和1 到2 位行控制寄存器ULCONn 里的停止位組成。接收器還可以檢測溢出錯,奇偶校
18、驗錯,幀錯誤和傳輸中斷,每一個錯誤均可以設(shè)置一個錯誤標(biāo)志。 </p><p> 溢出錯誤(Overrun error)是指已接收到的數(shù)據(jù)在讀取之前被新接收的數(shù)據(jù)覆蓋。 </p><p> 奇偶校驗錯是指接收器檢測到的校驗和與設(shè)置的不符。 </p><p> 幀錯誤指沒有接收到有效的停止位。 </p><p> 傳輸中斷表示接收數(shù)據(jù)Rx
19、Dn 保持邏輯0 超過一幀的傳輸時間。 </p><p> 在FIFO 模式下,如果RxFIFO 非空,而在3 個字的傳輸時間內(nèi)沒有接收到數(shù)據(jù),則產(chǎn)生超時。</p><p> 2.1.4 UART 控制寄存器 </p><p> 1) UART 行控制寄存器 ULCONn </p><p> 該寄存器的第6 位決定是否使用紅外模式,位
20、 5~3 決定校驗方式,位2 決定停止位長度,位 1 和0決定每幀的數(shù)據(jù)位數(shù)。 </p><p> 2)UART 控制寄存器 UCONn </p><p> 該寄存器決定UART 的各種模式。 </p><p> UCONn[10]= 1 : ULK 做比特率發(fā)生;0:PLK 做比特率發(fā)生。 </p><p> UCONn[9] =
21、 1: Tx 中斷電平觸發(fā);0:Tx 中斷脈沖觸發(fā)。 </p><p> UCONn[8] = 1: Rx 中斷電平觸發(fā);0:Rx 中斷脈沖觸發(fā)。 </p><p> UCONn[7] = 1: 接收超時中斷允許;0:接收超時中斷不允許。 </p><p> UCONn[6] = 1: 產(chǎn)生接收錯誤中斷;0:不產(chǎn)生接收錯誤中斷。 </p&g
22、t;<p> UCONn[5] = 1: 發(fā)送直接傳給接收方式(Loopback);0:正常模式。 </p><p> UCONn[4] = 1: 發(fā)送間斷信號;0:正常模式發(fā)送。 </p><p> UCONn[3:2]: 發(fā)送模式選擇 </p><p> 00:不允許發(fā)送; </p><p> 01:
23、中斷或查詢模式 </p><p> 10:DMA0 請求(UART0 ) </p><p> DMA3 請求(UART2 ) </p><p> 11: DMA1 請求(UART1 ). </p><p> UCONn[1:0] : 接收模式選擇 </p><p> 00 :不允許接收 </p
24、><p> 01 :中斷或查詢模式 </p><p> 10 :DMA0 請求(UART0 ) </p><p> DMA3 請求(UART2 ) </p><p> 11:DMA1 請求(UART1 ) </p><p> 3) UART FIFO 控制寄存器 UFCONn</p><p&g
25、t; UFCONn[7:6] =00:Tx FIFO 寄存器中有0 個字節(jié)就觸發(fā)中斷 </p><p> 01:Tx FIFO 寄存器中有4 個字節(jié)就觸發(fā)中斷 </p><p> 10:Tx FIFO 寄存器中有8 個字節(jié)就觸發(fā)中斷 </p><p> 11:Tx FIFO 寄存器中有0 個字節(jié)就觸發(fā)中斷 </p><p> UF
26、CONn[5:4] =00: Rx FIFO 寄存器中有0 個字節(jié)就觸發(fā)中斷 </p><p> 01:Rx FIFO 寄存器中有4 個字節(jié)就觸發(fā)中斷 </p><p> 10:Rx FIFO 寄存器中有8 個字節(jié)就觸發(fā)中斷 </p><p> 11:Rx FIFO 寄存器中有0 個字節(jié)就觸發(fā)中斷 </p><p> UFCONn[3
27、]:保留。 </p><p> UFCONn[2] =1:FIFO 復(fù)位清零Tx FIFO; 0:FIFO 復(fù)位不清零Tx FIFO </p><p> UFCONn[1] =1:FIFO 復(fù)位清零 Rx FIFO; 0:FIFO 復(fù)位不清零 Rx FIFO </p><p> UFCONn[0] =1:允許 FIFO 功能; 0:不允許FIFO 功能 <
28、;/p><p> 4) UART MODEM 控制寄存器 UMCONn(n=0 或 1) </p><p> UMCONn[7:5] 保留,必須全為 0 </p><p> UMCONn[4] =1:允許使用AFC 模式; 0:不允許使用AFC </p><p> UMCONn[3:1] 保留,必須全
29、為 0 </p><p> UMCONn[0] =1:激活nRTS; 0:不激活 nRTS </p><p> 5) 發(fā)送寄存器 UTXH 和接收寄存器 URXH </p><p> 這兩個寄存器存放著發(fā)送和接收的數(shù)據(jù),當(dāng)然只有一個字節(jié)8位數(shù)據(jù)。需要注意的是在 </p><p> 發(fā)生溢出錯誤的時候,接收的數(shù)據(jù)必須被讀出來,否則會引
30、發(fā)下次溢出錯誤。</p><p> 6) 波特率分頻寄存器 UBRDIV。 </p><p> 在例程目錄下的common\include\2410addr.h 文件中有關(guān)于UART 單元各寄存器的定義。 </p><p><b> // UART </b></p><p> #define rULCON0
31、 (*(volatile unsigned *)0x50000000) //UART 0 Line control </p><p> #define rUCON0 (*(volatile unsigned *)0x50000004) //UART 0 Control </p><p> #define rUFCON0 (*(volatile unsigned *
32、)0x50000008) //UART 0 FIFO control </p><p> #define rUMCON0 (*(volatile unsigned *)0x5000000c) //UART 0 Modem control </p><p> #define rUTRSTAT0 (*(volatile unsigned *)0x50000010) //UART
33、0 Tx/Rx status </p><p> #define rUERSTAT0 (*(volatile unsigned *)0x50000014) //UART 0 Rx error status </p><p> #define rUFSTAT0 (*(volatile unsigned *)0x50000018) //UART 0 FIFO status <
34、;/p><p> #define rUMSTAT0 (*(volatile unsigned *)0x5000001c) //UART 0 Modem status </p><p> #define rUBRDIV0 (*(volatile unsigned *)0x50000028) //UART 0 Baud rate divisor </p><p&
35、gt; #define rULCON1 (*(volatile unsigned *)0x50004000) //UART 1 Line control </p><p> #define rUCON1 (*(volatile unsigned *)0x50004004) //UART 1 Control </p><p> #define rUFCON1
36、(*(volatile unsigned *)0x50004008) //UART 1 FIFO control </p><p> #define rUMCON1 (*(volatile unsigned *)0x5000400c) //UART 1 Modem control </p><p> #define rUTRSTAT1 (*(volatile unsigned
37、 *)0x50004010) //UART 1 Tx/Rx status </p><p> #define rUERSTAT1 (*(volatile unsigned *)0x50004014) //UART 1 Rx error status </p><p> #define rUFSTAT1 (*(volatile unsigned *)0x50004018) //
38、UART 1 FIFO status </p><p> #define rUMSTAT1 (*(volatile unsigned *)0x5000401c) //UART 1 Modem status </p><p> #define rUBRDIV1 (*(volatile unsigned *)0x50004028) //UART 1 Baud rate divi
39、sor </p><p> #define rULCON2 (*(volatile unsigned *)0x50008000) //UART 2 Line control </p><p> #define rUCON2 (*(volatile unsigned *)0x50008004) //UART 2 Control </p><p>
40、 #define rUFCON2 (*(volatile unsigned *)0x50008008) //UART 2 FIFO control </p><p> #define rUMCON2 (*(volatile unsigned *)0x5000800c) //UART 2 Modem control </p><p> #define r
41、UTRSTAT2 (*(volatile unsigned *)0x50008010) //UART 2 Tx/Rx status </p><p> #define rUERSTAT2 (*(volatile unsigned *)0x50008014) //UART 2 Rx error status </p><p> #define rUFST
42、AT2 (*(volatile unsigned *)0x50008018) //UART 2 FIFO status </p><p> #define rUMSTAT2 (*(volatile unsigned *)0x5000801c) //UART 2 Modem status </p><p> #define rUBRDIV2
43、 (*(volatile unsigned *)0x50008028) //UART 2 Baud rate divisor </p><p> #ifdef __BIG_ENDIAN </p><p> #define rUTXH0 (*(volatile unsigned char *)0x50000023) //UART 0 Transmission
44、Hold </p><p> #define rURXH0 (*(volatile unsigned char *)0x50000027) //UART 0 Receive buffer </p><p> #define rUTXH1 (*(volatile unsigned char *)0x50004023) //UART 1 Tran
45、smission Hold </p><p> #define rURXH1 (*(volatile unsigned char *)0x50004027) //UART 1 Receive buffer </p><p> #define rUTXH2 (*(volatile unsigned char *)0x50008023) //UA
46、RT 2 Transmission Hold </p><p> #define rURXH2 (*(volatile unsigned char *)0x50008027) //UART 2 Receive buffer </p><p> #define WrUTXH0(ch) (*(volatile unsigned char *)0x50000023)=(
47、unsigned char)(ch) </p><p> #define RdURXH0() (*(volatile unsigned char *)0x50000027) </p><p> #define WrUTXH1(ch) (*(volatile unsigned char *)0x50004023)=(unsigned char)(ch) </p>
48、;<p> #define RdURXH1() (*(volatile unsigned char *)0x50004027) </p><p> #define WrUTXH2(ch) (*(volatile unsigned char *)0x50008023)=(unsigned char)(ch) </p><p> #define RdURXH
49、2() (*(volatile unsigned char *)0x50008027) </p><p> #define UTXH0 (0x50000020+3) //Byte_access address by DMA </p><p> #define URXH0 (0x50000024+3) <
50、/p><p> #define UTXH1 (0x50004020+3) </p><p> #define URXH1 (0x50004024+3) </p><p> #define UTXH2 (0x50008020+3) </p><p> #define
51、URXH2 (0x50008024+3) </p><p> #else //Little Endian </p><p> #define rUTXH0 (*(volatile unsigned char *)0x50000020) //UART 0 Transmission Hold </p><p> #define rURXH
52、0 (*(volatile unsigned char *)0x50000024) //UART 0 Receive buffer </p><p> #define rUTXH1 (*(volatile unsigned char *)0x50004020) //UART 1 Transmission Hold </p><p> #define rURXH1 (*(volatile
53、 unsigned char *)0x50004024) //UART 1 Receive buffer </p><p> #define rUTXH2 (*(volatile unsigned char *)0x50008020) //UART 2 Transmission Hold </p><p> #define rURXH2 (*(volatile unsigned cha
54、r *)0x50008024) //UART 2 Receive buffer </p><p> #define WrUTXH0(ch) (*(volatile unsigned char *)0x50000020)=(unsigned char)(ch) </p><p> #define RdURXH0() (*(volatile unsigned char *)
55、0x50000024) </p><p> #define WrUTXH1(ch) (*(volatile unsigned char *)0x50004020)=(unsigned char)(ch) </p><p> #define RdURXH1() (*(volatile unsigned char *)0x50004024) </p><
56、p> #define WrUTXH2(ch) (*(volatile unsigned char *)0x50008020)=(unsigned char)(ch) </p><p> #define RdURXH2() (*(volatile unsigned char *)0x50008024) </p><p> #define UTXH0
57、 (0x50000020) //Byte_access address by DMA </p><p> #define URXH0 (0x50000024) </p><p> #define UTXH1 (0x50004020) </p><p> #define URXH1
58、 (0x50004024) </p><p> #define UTXH2 (0x50008020) </p><p> #define URXH2 (0x50008024) </p><p><b> #endif </b></p><p> 2.1.5 UART 初
59、始化代碼 </p><p> 下面列出的兩個函數(shù),是我們本實驗用到的兩個主要函數(shù),包括 UART 初始化,字符 </p><p> 的接收函數(shù),希望大家仔細閱讀,理解每一行的含義。這幾個函數(shù)可以在例程目錄下 </p><p> \common\include\2410lib.c 文件內(nèi)找到。 </p><p> void uart_i
60、nit(int nMainClk, int nBaud, int nChannel) </p><p><b> { </b></p><p><b> int i; </b></p><p> if(nMainClk == 0) </p><p> nMainClk = PCLK; <
61、;/p><p> switch (nChannel) </p><p><b> { </b></p><p> case UART0: </p><p> rUFCON0 = 0x0; //UART channel 0 FIFO control register, FIFO disable </p
62、><p> rUMCON0 = 0x0; //UART chaneel 0 MODEM control register, AFC disable </p><p> rULCON0 = 0x3; //Line control register : Normal,No parity,1 stop,8 bits </p><p> rUCON0 =
63、 0x245; // Control register </p><p> rUBRDIV0=( (int)(nMainClk/16./nBaud+0.5) -1 ); // Baud rate divisior register0</p><p><b> break; </b></p><p> case UART1: &l
64、t;/p><p> rUFCON1 = 0x0; //UART channel 1 FIFO control register, FIFO disable </p><p> rUMCON1 = 0x0; //UART chaneel 1 MODEM control register, AFC disable </p><p> rULCON1
65、= 0x3; </p><p> rUCON1 = 0x245; </p><p> rUBRDIV1=( (int)(nMainClk/16./nBaud) -1 ); </p><p><b> break; </b></p><p> case UART2: </p><p> r
66、ULCON2 = 0x3; </p><p> rUCON2 = 0x245;</p><p> rUBRDIV2=( (int)(nMainClk/16./nBaud) -1 ); </p><p> rUFCON2 = 0x0; //UART channel 2 FIFO control register, FIFO disable </
67、p><p><b> break; </b></p><p><b> default: </b></p><p><b> break; </b></p><p><b> } </b></p><p> for(i=0;i
68、<100;i++); </p><p> delay(0); </p><p><b> } </b></p><p> 下面是接收字符的實現(xiàn)函數(shù): </p><p> /********************************************************************
69、**********</p><p> * name: uart_getch </p><p> * func: Get a character from the uart </p><p> * para: none </p><p> * ret: get a
70、 char from uart channel </p><p> * modify: </p><p> * comment: </p><p> ******************************************************************************/ </p><p> cha
71、r uart_getch(void) </p><p><b> { </b></p><p> if(f_nWhichUart==0) </p><p><b> { </b></p><p> while(!(rUTRSTAT0 & 0x1)); //Receive data r
72、eady </p><p> return RdURXH0(); </p><p><b> } </b></p><p> else if(f_nWhichUart==1) </p><p><b> { </b></p><p> while(!(rUTRSTA
73、T1 & 0x1)); //Receive data ready </p><p> return RdURXH1(); </p><p><b> } </b></p><p> else if(f_nWhichUart==2) </p><p><b> { </b></p
74、><p> while(!(rUTRSTAT2 & 0x1)); //Receive data ready </p><p> return RdURXH2(); </p><p><b> } </b></p><p><b> } </b></p><p>
75、 2.1.6 RS232 接口電路 </p><p> 本教學(xué)實驗平臺的電路中,UART0 串口電路如圖4-4-1 所示,UART0 只采用二根接線 RXD0 和TXD0,因此只能進行簡單的數(shù)據(jù)傳輸及接收功能。UART0 則采用MAX3221E作為電平轉(zhuǎn)換器。</p><p> 2.1.7串口接收設(shè)置</p><p> 在PC 機上運行windows 自帶的
76、超級終端串口通信程序(波特率115200、1 位停止位、無校驗位、無硬件流控制)如圖4-4-2 所示;或者使用其它串口通信程序。</p><p> 2.1.8調(diào)試運行結(jié)果</p><p> 如果輸入就會馬上顯示在超級終端上(假設(shè)輸入為abcdefg),輸入回車符后打印一整串字符:</p><p> 按回車鍵就會顯示:abcdefg 串口通信成功完成。<
77、/p><p><b> 2.2硬件裝置</b></p><p> 2.2.1Embest EduKit-III 實驗平臺</p><p> 采用雙CPU子板,ARM7 S3C44B0子板,ARM9 S3C2410子板,16M NandFlash;4Kbit IIC BUS 的串行EEPROM ,2個串口,兩個中斷按鈕,4個LED, 320*2
78、40 STN 彩色 LCD及TSP觸摸屏,4×5鍵盤,20針JTAG接口,PS/2接口, 2個USB主口;1個USB從口, Sd卡,VGA接口,雙PCI擴展接口,雙以太網(wǎng)接口,8段數(shù)碼管,雙CAN總線模塊,A/D 、D/A 模塊,IDE 硬盤 +CF 卡模塊 ;固態(tài)硬盤 16M × 8bit,MICROPHONE 輸入口,IIS 音頻信號輸出口,GPRS 模塊(選配),GPS 模塊(選配)。</p>&
79、lt;p> 多外擴模塊支持:提供 GPRS 模塊、提供 GPS 模塊、步進電機模塊、攝像模塊、PCI外部焊接板</p><p> 核心模塊:基于ARM7架構(gòu)的嵌入式芯片三星S3C44B0x芯片(或ARM9架構(gòu)的嵌入式芯片三星S3C2410V6),整套系統(tǒng)可通過CPU子板可自由更換變化為ARM7或者ARM9</p><p> 電源:外部5V電源供電或者由USB接PC供電,電源指示
80、LED以及500mA保險絲</p><p> 2M×16bit Flash;4M×16bit SDRM</p><p><b> 復(fù)位開關(guān)</b></p><p> Embest EDUKIT-III軟件配置:uCosII 實時操作系統(tǒng)移植例子以及源代碼,uClinux實時操作系統(tǒng)移植例子以及源代碼,Linux實時操作
81、系統(tǒng)移植例子以及源代碼,WinCE實時操作系統(tǒng)移植例子*,Vxworks實時操作系統(tǒng)移植例子,GNU toolchain including ARM cross compiler, Linker, Assembler, and Utilities,基于Embest IDE Pro for ARM環(huán)境和Embest EDUKIT-III實驗箱實驗源程序。 </p><p> 2.2.2ULINK2 仿真器套件,
82、PC 機</p><p> ULINK2不僅具有ULINK仿真器的所有功能,還增加了串行調(diào)試(SWD)支持,返回時鐘支持和實時代理等功能。開發(fā)工程師通過結(jié)合使用RealView MDK的調(diào)試器和ULINK2,可以方便的在目標(biāo)硬件上進行片上調(diào)試(使用on-chip JTAG,SWD和OCDS)、Flash編程。</p><p><b> 2.3 軟件設(shè)計</b>&l
83、t;/p><p> 2.3.1軟件設(shè)備 </p><p> Embest IDE for ARM 集成開發(fā)環(huán)境,Windows 98/2000/NT/XP</p><p> 2.3.2程序代碼設(shè)計</p><p> /**********************************************************
84、********************</p><p> * File: uart_communication.c </p><p> * Author: embest </p><p> * Desc: uart test file </p><p> * History: </p><p>
85、 * R.X.Huang, Programming modify, March 12, 2005 </p><p> ******************************************************************************/ </p><p> /* include
86、files */ </p><p> #include "2410lib.h" </p><p> /* function declare */ </p><p> /****************************
87、************************************************** </p><p> * name: uart0_test </p><p> * func: uart test function</p><p> *****************************************
88、*************************************/</p><p> * para: none </p><p> * ret: none </p><p> * modify: </p><p> * comment: </p><p> *******
89、***********************************************************************/ </p><p> void uart0_test() </p><p><b> { </b></p><p> char cInput[256]; </p><p>
90、 U8 ucInNo=0; </p><p><b> char c; </b></p><p> uart_init(0,115200,0); </p><p> uart_printf("\n UART0 communication test!!\n"); </p><p> uart_
91、printf(" Please input words that you want to transmit:\n"); </p><p> uart_printf(" "); </p><p> g_nKeyPress = 1; </p><p> while(g_nKeyPress==1)
92、 // only for board test to exit </p><p><b> { </b></p><p> c=uart_getch(); </p><p> //uart_sendbyte(c); </p><p> uart_printf("%c",c);
93、 </p><p> if(c!='\r') </p><p> cInput[ucInNo++]=c; </p><p><b> else </b></p><p><b> { </b></p><p> cInput[ucInNo]='
94、;\0'; </p><p><b> break; </b></p><p><b> } </b></p><p><b> } </b></p><p> delay(1000); </p><p> uart_printf(&q
95、uot;The words that you input are:\n"); </p><p> uart_printf(cInput); </p><p><b> } </b></p><p> 串口通信函數(shù)庫中的其它函數(shù): </p><p> void uart_getString(char *p
96、String); </p><p> int uart_getintnum(void); </p><p> void uart_sendbyte(int nData); </p><p> void uart_sendstring(char *pString);</p><p><b> 總結(jié)與體會</b>&l
97、t;/p><p> 一方面,通過這次的課程設(shè)計,我對關(guān)于Embest EduKit-III 實驗平臺,ULINK2 仿真器套件,S3C2410X 串行通訊(UART)單元結(jié)構(gòu)的知識有了更加深刻的理解,而且對其用法掌握的更加熟練。在課程設(shè)計過程中,能夠不斷地發(fā)現(xiàn)問題,并想辦法解決,如此提高了我自己解決問題的能力。在程序設(shè)計方面,我對串口通信的過程有了更深刻的理解和領(lǐng)會。此次課程設(shè)計讓我還讓我知道了Embest Edu
98、Kit-III 實驗平臺的構(gòu)造及功能。同時我也明白了理論和實踐的差距,深切體會了動手能力的重要性。</p><p> 另一方面,我感覺這次的課程設(shè)計我自己的效率不高,有時候被一些問題困惑了很久,但經(jīng)過同學(xué)的幫忙,我才恍然大悟,原來只要換個方式思考問題就能想到很好的方法。 </p><p><b> 參考文獻</b></p><p> [1
99、] 張勇編著.《ARM原理與C語言程序設(shè)計》. 西安:西安電子科技大學(xué)出版社,2004.</p><p> [2] 王勇編著.《嵌入式系統(tǒng)原理與設(shè)計》. 杭州:浙江大學(xué)出版社,2007.</p><p> [3] 馬忠梅.《ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用》. 北京:北京航空航天大學(xué)出版社,2002.</p>
100、<p> [4] 周立功 等編著.《ARM微控制器基礎(chǔ)與實戰(zhàn)》. 北京:北京航空航天大學(xué)出版社,2003.</p><p> [5] 王田苗主編.《嵌入式系統(tǒng)設(shè)計與實例開發(fā)》. 北京:清華大學(xué)出版社,2002.</p><p> [6] 周立功 等編著.《PXA270 & Linu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式課程設(shè)計--串口通信的設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計---嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)
- 嵌入式課程設(shè)計報告---嵌入式文件鎖應(yīng)用
- 嵌入式課程設(shè)計報告2
- 嵌入式課程設(shè)計大作業(yè)
- 嵌入式系統(tǒng)綜述課程設(shè)計
- 嵌入式觸摸屏課程設(shè)計---arm嵌入式系統(tǒng)
- 課程設(shè)計---嵌入式系統(tǒng)項目設(shè)計
- 《嵌入式系統(tǒng)設(shè)計》課程設(shè)計報告
- 嵌入式課程設(shè)計報告 (2)
- 嵌入式課程設(shè)計報告91452
- 微機原理串口通信課程設(shè)計
- 串口通信c++課程設(shè)計
- 嵌入式課程設(shè)計--計算器
評論
0/150
提交評論