嵌入式系統(tǒng)設(shè)計與實例開發(fā)實驗指導(dǎo)書_第1頁
嵌入式系統(tǒng)設(shè)計與實例開發(fā)實驗指導(dǎo)書_第2頁
嵌入式系統(tǒng)設(shè)計與實例開發(fā)實驗指導(dǎo)書_第3頁
嵌入式系統(tǒng)設(shè)計與實例開發(fā)實驗指導(dǎo)書_第4頁
嵌入式系統(tǒng)設(shè)計與實例開發(fā)實驗指導(dǎo)書_第5頁
已閱讀5頁,還剩309頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、目目 錄錄 第一章第一章 嵌入式系統(tǒng)開發(fā)環(huán)境簡介嵌入式系統(tǒng)開發(fā)環(huán)境簡介.3 1.11.1 ARMARM SDTSDT 2.52.5 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介 .3 3 1.21.2 ADS1.2ADS1.2 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介 .1515 1.31.3 超級終端設(shè)置及超級終端設(shè)置及 BIOSBIOS 功能使用功能使用 .3030 第二章第二章 嵌入式系統(tǒng)硬件驅(qū)動基礎(chǔ)開發(fā)案例嵌入式系統(tǒng)硬件驅(qū)動基礎(chǔ)開發(fā)案例.34 2.12.1 ARMARM 的串行口實驗的串行口實驗.3434 2.22.2 鍵盤及鍵盤及 LEDLED 驅(qū)動實驗驅(qū)動實驗C C 語言實現(xiàn)方法語言實現(xiàn)方法.4343 2.32.3

2、鍵盤及鍵盤及 LEDLED 驅(qū)動實驗驅(qū)動實驗ARMARM 匯編語言實現(xiàn)方法匯編語言實現(xiàn)方法 .5252 2.42.4 D/AD/A 接口試驗接口試驗 .5656 2.52.5 ARMARM 的的 A/DA/D 接口實驗接口實驗 .6161 2.62.6 電機(jī)轉(zhuǎn)動控制實驗電機(jī)轉(zhuǎn)動控制實驗C C 語言實現(xiàn)方法語言實現(xiàn)方法.6767 2.72.7 步進(jìn)電機(jī)控制步進(jìn)電機(jī)控制ARMARM 匯編語言實現(xiàn)方法匯編語言實現(xiàn)方法 .7878 2.82.8 LCDLCD 的驅(qū)動控制實驗的驅(qū)動控制實驗.8383 2.92.9 觸摸屏驅(qū)動實驗觸摸屏驅(qū)動實驗 .9292 2.102.10 CANCAN 總線通訊實驗總線

3、通訊實驗.101101 第三章第三章 嵌入式系統(tǒng)核心開發(fā)案例嵌入式系統(tǒng)核心開發(fā)案例.109 3.13.1 定時器中斷和驅(qū)動程序?qū)嶒灦〞r器中斷和驅(qū)動程序?qū)嶒?.109109 3.23.2 B BOOTOOTL LOADEROADER實驗實驗.116116 3.33.3 U UCOS-IICOS-II 在在 ARMARM 微處理器上的移植及編譯微處理器上的移植及編譯 .119119 3.43.4 完善的完善的U UCOS-IICOS-II 開發(fā)框架開發(fā)框架.130130 第四章第四章 基于基于 UCOS-IIUCOS-II 操作系統(tǒng)的開發(fā)案例操作系統(tǒng)的開發(fā)案例.133 4.14.1 音頻實驗音頻實

4、驗 .133133 4.24.2 繪圖的繪圖的 APIAPI 函數(shù)函數(shù) .143143 4.34.3 系統(tǒng)的消息循環(huán)系統(tǒng)的消息循環(huán) .146146 4.44.4 文件的使用文件的使用 .149149 4.54.5 列表框控件的使用列表框控件的使用 .153153 4.64.6 文本框控件的使用文本框控件的使用 .157157 4.74.7 多任務(wù)和系統(tǒng)時鐘多任務(wù)和系統(tǒng)時鐘 .160160 4.84.8UDPUDP 通訊實驗通訊實驗.171171 第五章第五章 嵌入式系統(tǒng)綜合開發(fā)案例嵌入式系統(tǒng)綜合開發(fā)案例.183 5.15.1 綜合實驗綜合實驗 .183183 5.25.2 模擬電子畫板實驗觸摸

5、屏應(yīng)用模擬電子畫板實驗觸摸屏應(yīng)用 .187187 5.35.3 基于基于 ARMARM 的多通道儀表數(shù)據(jù)采集實驗的多通道儀表數(shù)據(jù)采集實驗多任務(wù)與多任務(wù)與 A/DA/D 轉(zhuǎn)換轉(zhuǎn)換 .190190 第六章第六章 圖形界面圖形界面 MINIGUIMINIGUI 入門案例入門案例.194 6.16.1 M MINIINIGUIGUI 到到U UCOS-IICOS-II -H-HELLOELLOW WORLDORLD程序程序.194194 6.26.2 M MINIINIGUIGUI 到到U UCOS-II-COS-II-LOADBMPLOADBMP位圖操作位圖操作 .206206 第七章第七章 嵌入式

6、系統(tǒng)擴(kuò)展板開發(fā)案例嵌入式系統(tǒng)擴(kuò)展板開發(fā)案例.209 7.17.1 GPRSGPRS 擴(kuò)展板通信實驗擴(kuò)展板通信實驗.209209 7.27.2 GPSGPS 通訊實驗通訊實驗.214 7.37.3 基于基于 ARM7ARM7 的的 FPGAFPGA 實驗實驗 .222222 附錄附錄 A 嵌入式系統(tǒng)應(yīng)用編程嵌入式系統(tǒng)應(yīng)用編程 API 函數(shù)函數(shù).238 1 1顯示部分顯示部分 D DISPLAYISPLAY. .H H.238238 2 2操作系統(tǒng)的消息相關(guān)函數(shù)操作系統(tǒng)的消息相關(guān)函數(shù) OSMOSMESSAGEESSAGE. .H H.245245 3 3控件的相關(guān)函數(shù)控件的相關(guān)函數(shù) C CONTR

7、OLONTROL. .H H.247247 4 4文件相關(guān)函數(shù)文件相關(guān)函數(shù) OSFOSFILEILE. .H H.255255 5 5雙向鏈表相關(guān)函數(shù)雙向鏈表相關(guān)函數(shù) L LISTIST. .H H.256256 6 6觸摸屏相關(guān)函數(shù)觸摸屏相關(guān)函數(shù)TCHTCHS SCRCR. .H H.257257 7 7鍵盤相關(guān)函數(shù)鍵盤相關(guān)函數(shù) K KEYEYB BOARDOARD16.16.H H.257257 8 8液晶顯示相關(guān)函數(shù)液晶顯示相關(guān)函數(shù) L LCDCD320.320.H H.258258 9 9USBUSB 相關(guān)函數(shù)相關(guān)函數(shù) OSOSUSBUSB. .H H.259259 1010系統(tǒng)時間相

8、關(guān)函數(shù)系統(tǒng)時間相關(guān)函數(shù) R RTCTC. .H H.259259 1111串行口相關(guān)函數(shù)串行口相關(guān)函數(shù) U UHALHAL. .H H.261261 1212字符串相關(guān)函數(shù)字符串相關(guān)函數(shù) U USTRINGSTRING. .H H.262262 1313系統(tǒng)圖形相關(guān)函數(shù)系統(tǒng)圖形相關(guān)函數(shù) F FIGUREIGURE. .H H.262262 1414系統(tǒng)啟動時相關(guān)函數(shù)系統(tǒng)啟動時相關(guān)函數(shù) L LOADOADF FILEILE. .H H.264264 1515系統(tǒng)附加任務(wù)相關(guān)函數(shù)系統(tǒng)附加任務(wù)相關(guān)函數(shù) OSAOSADDDDT TASKASK. .H H.264264 1616TCP/IPTCP/IP

9、 相關(guān)函數(shù)相關(guān)函數(shù) I INTERNETNTERNET. .H H LCD_Init(); LCD_ChangeMode(DspTxtMode); /轉(zhuǎn)換 LCD 顯示模式為文本顯示模式 LCD_Cls(); /文本模式下清屏命令 LCD_printf(Hello world!n); /向液晶屏輸出 Uart_Printf(nHello world!n); /向串口輸出 while(1); 讀者可以分別打開其他的源文件,了解該系統(tǒng)運(yùn)行的基本知識。這個程序沒有用到操 作系統(tǒng),只是簡單的說明工程的開發(fā)過程,帶有操作系統(tǒng)的實驗將在“uCOS-II 在 ARM 處理 器的移植”實驗之后出現(xiàn)。 2進(jìn)行程

10、序的在線仿真、調(diào)試 (1)回到 ARM Project Manager ,選中工程樹中 Debug 子樹,通過 Project | Build work1.apj“Debug”菜單(或者工具欄中的相應(yīng)按鈕)編譯整個工程。 (2)把 ARM 的 JTAG 仿真器連接到 PC 機(jī)的并行口和開發(fā)板上,打開開發(fā)板的電源,運(yùn) 行仿真器的驅(qū)動程序 UarmJTAG.exe。 (3)使用 Project | Debug work1.apj“Debug”菜單(或者工具欄中的相應(yīng)按鈕)啟 動 ARM Debugger 軟件調(diào)試程序。 (4)在 ARM Debugger 中,通過 Options | Config

11、ure Debugger 菜單設(shè)置仿真器。如 圖 1-11 所示,在彈出的對話框中,設(shè)置 Target Environment 為 Remote_A。 圖 1-11 設(shè)置仿真器 (5)單擊 Configure 按鈕,按照如圖 1-12 所示,設(shè)置仿真器。 圖 1-12 設(shè)置仿真器 (6)出現(xiàn)下面提示信息以后,點(diǎn)“是” ,ARM Debbuger 開始通過仿真器裝載程序,如 圖 1-13 所示。 圖 1-13 裝載程序 注意: 第(4) 、 (5)步設(shè)置好后,以后再調(diào)試的時候直接進(jìn)行到第(6)步,不需要再設(shè) 置。 當(dāng)不能進(jìn)行第(6)步時,重復(fù)第(4) 、 (5) 。 本機(jī)的 IP 地址 (7)裝

12、載完畢以后,通過 Execute | Go 菜單(或者工具欄中的相應(yīng)按鈕)運(yùn)行程序。 (8)程序運(yùn)行的時候,可以使用 Execute | Stop 菜單(或者工具欄中的相應(yīng)按鈕)暫停 運(yùn)行程序。如圖 1-14 所示,在 Execute 窗口中將顯示出程序暫停的位置。 圖 1-14 顯示出程序暫停的位置 (9)通過 Execute | Step 菜單(或者工具欄中的相應(yīng)按鈕)可以單步運(yùn)行程序。也 可以使用 Step In、Step Out 菜單命令進(jìn)入或者跳出函數(shù)的調(diào)用。 (10)在程序停止運(yùn)行的時候,選擇 View | Source Files 菜單命令,可以打開如圖 1-15 所示的源程序例

13、表窗口,雙擊列表中的文件名可以查看相應(yīng)的源文件。 圖 1-15 查看源文件 注意: 查看源文件時,有時可能會出現(xiàn)看不到自己的源文件的情況,這時要將工程重新強(qiáng)制 編 譯一下。 (11)在源文件列表中打開 main.c 文件。選擇源文件中的某一行,右擊鼠標(biāo),如圖 1- 16 所示,用 Toggle Breakpoint 快捷菜單命令可以設(shè)置斷點(diǎn),使程序運(yùn)行到這里停下來。 圖 1-16 設(shè)置斷點(diǎn) (12)使用在 View 菜單下的 Registers、Variables 和 Memory 命令可以查看工作寄存 器或者內(nèi)存變量。讀者可以逐一地嘗試,為以后調(diào)試程序打下基礎(chǔ)。 1.2 ADS1.2 開發(fā)環(huán)

14、境簡介 一、實驗?zāi)康?熟悉 ADS1.2 開發(fā)環(huán)境,學(xué)會 ARM 仿真器的使用。使用 ADS 編譯、下載、調(diào)試并跟蹤一 段已有的程序,了解嵌入式開發(fā)的基本思想和過程。 二、實驗內(nèi)容 本次實驗配置 ADS 集成開發(fā)環(huán)境,新建一個簡單的工程文件,并編譯這個工程文件。 學(xué)習(xí) ARM 仿真器的使用和開發(fā)環(huán)境的設(shè)置。下載已經(jīng)編譯好的文件到嵌入式控制器中運(yùn)行。 學(xué)會在程序中設(shè)置斷點(diǎn),觀察系統(tǒng)內(nèi)存和變量,為調(diào)試應(yīng)用程序打下基礎(chǔ)。 三、預(yù)備知識 C 語言的基礎(chǔ)知識、程序調(diào)試的基礎(chǔ)知識和方法。 四、實驗設(shè)備及工具(包括軟件調(diào)試工具) 硬件:ARM 嵌入式開發(fā)平臺、用于 ARM7TDMI 的 JTAG 仿真器、P

15、C 機(jī) Pentium100 以上、 串口線。 軟件:PC 機(jī)操作系統(tǒng) win98、Win2000 或 WinXP、ARM SDT 2.51 或 ADS1.2 集成開發(fā)環(huán) 境、仿真器驅(qū)動程序、超級終端通訊程序。 五、實驗步驟 1 配置 ADS 集成開發(fā)環(huán)境 (1)運(yùn)行 ADS1.2 集成開發(fā)環(huán)境(CodeWarrior for ARM Developer Suite) 。選擇 FileNew菜單,在對話框中選擇 Project,如圖 1-17 所示,新建一個工程文件。圖中示 例的工程名為 Exp6.mcp。點(diǎn) set按鈕可為該工程選擇路徑如圖 1-18 所示,選中 CreatFolder 選項

16、后將以圖 1-17 中的 ProjectName 或圖 1-18 中的文件名為名創(chuàng)建目錄,這 樣可以將所有與該工程相關(guān)的文件放到該工程目錄下,便于管理工程。 在圖 1-17 中工程模板列表中我們選擇 ARM Executable Image 通用模板。我們隨后將一 步一步的把它配置成針對我們的 ARM3000 開發(fā)板的模板 44B0 ARM Executable Imaage,并 把它拷貝到 ADS1.2 安裝目錄下的 Stationery 目錄中(所有的工程模板都在此目錄下) 。以 后我們新建工程時,在工程模板列表中直接選中 44B0 ARM Executable Imaage 模板選項,

17、就不必每次重新配置模板了。 圖 1-17 新建工程 圖 1-18 保存工程 (2)在新建的工程中,如圖 1-19 所示,選擇 Debug 版本,使用 Edit | Debug Settings 菜單對 Debug 版本進(jìn)行參數(shù)設(shè)置。 圖 1-19 選擇版本 (3)在 Debug Settings 對話框中選擇 Target Settings 項,如圖 1-20 所示。在 Post- linker 一欄中選擇 ARM fromELF,點(diǎn)擊右下角的 Apply 使其有效。 圖 1-20 Target Settings (4)在 Debug Settings 對話框中選擇 ARM Linker 項,

18、如圖 1-21。在 Output 下的 Linktype 中有三種類型的連接方式,我們常用的是 Simple 和 Scattered 兩種。Simple 是 一種簡單設(shè)置,如果程序需要用到標(biāo)準(zhǔn) C 庫函數(shù)的話需要按 Scattered 進(jìn)行連接地址的設(shè) 置。若你用不到標(biāo)準(zhǔn) C 庫函數(shù)的話,請選擇 Simple 選項,并按照下邊的第(5) 、 (8) 、 (9)進(jìn)行設(shè)置。若你用到標(biāo)準(zhǔn) C 庫函數(shù)的話,請選擇 Scattered 選項,并按照下邊的第 (6) 、 (7) 、 (9)進(jìn)行設(shè)置。 (5)在 ARM Linker 項的 Output 選項卡中,我們選擇 Simple 選項,如圖 1-21

19、 所示。在 Simple image 框中設(shè)置連接的 Read-Only(只讀)和 Read-Write(讀寫)地址。地址 0 x0c 是開發(fā)板上 SDRAM 的真實地址,是由系統(tǒng)的硬件決定的;0 x0c 指的是系統(tǒng)可讀寫的內(nèi)存地 址。也就是說,在 0 x0c0 xC1fffff 之間是只讀區(qū)域,存放程序的代碼段,在 0 xC 開始是程序 的數(shù)據(jù)段。 圖 1-21 設(shè)置連接地址范圍 (6) 在 ARM Linker 項的 Output 選項卡中,我們選擇 Scattered 選項,如圖 1-22 所示. 標(biāo)準(zhǔn) C 中如果使用 malloc 及其相關(guān)的函數(shù),需要使用系統(tǒng)的堆(Heap)空間,可以

20、通 過 scatter 文件來描述系統(tǒng) HEAP 段的位置。針對 44B0 開發(fā)板,把程序的入口定位在 0 xc, 并定義 scatter 文件為 scat_ram.scf。 在圖 1-22 中選擇 LinkType 為 Scattered, 輸入 scatter 文件名 scat_ram.scf;然后 切換到 Options 選項卡在 Image Entry Point 框中輸入 0 xc。也可以在圖 1-22 的 Command Line 框中直接輸入-entry 0 xc -scatter scat_ram.scf 進(jìn)行上述設(shè)置。 圖 1-22 通過 scatter 文件設(shè)置連接地址 提

21、示: 程序移植到 ADS 后,程序最開始首先執(zhí)行用匯編寫的初始化代碼包括中斷向 量 和內(nèi)存空間的初始化。在該段代碼中使用 IMPORT_main;(注意 main 前面是兩個下劃線) B _main 進(jìn)行系統(tǒng)內(nèi)部的標(biāo)準(zhǔn) C 函數(shù)初始化,然后調(diào)用用戶在 C 中定義的 main()函數(shù)(注 意:兩個 main 都是小寫) ,并且在嵌入式應(yīng)用中用戶 C 的 main 函數(shù)中不能有參數(shù) (int main(void)) 。 2)不能有系統(tǒng)定義的軟中斷,在匯編中可以使用 IMPORT _use_no_semihosting_swi 來檢測,在 C 中使用 #pragma import(_use_no_s

22、emihosting_swi) / ensure no functions that use semihosting scatter 文件內(nèi)容如下,創(chuàng)建了一個 RAM_LOAD 的程序和數(shù)據(jù)的裝載區(qū)域,起始地 址 0 xc。 RAM_LOAD 0 xc RAM_EXEC 0 xc 44binit.o (init, +First) * (+RO) RAM 0 x0c * (+RW,+ZI) HEAP +0 UNINIT heap.o (+ZI) STACKS 0 xc7ff000 UNINIT stack.o (+ZI) ISR_STARTADDRESS 0 xc7fff00 ;SDRAM bo

23、ttom isr_address.o (+ZI) 在圖 1-23 中說明了這個裝載區(qū)域的劃分。 圖 1-23 程序和數(shù)據(jù)裝載區(qū)域的劃分 4)定義 retarget.c 函數(shù),重新定位標(biāo)準(zhǔn) C 庫中 stdio 的一些相關(guān)函數(shù)。主要有: struct _FILE int handle; /* Add whatever you need here */; FILE _stdout; /文件的定義 int fputc(int ch, FILE *f) /fputc 函數(shù) int ferror(FILE *f) /ferror 函數(shù) void _sys_exit(int return_code) /系

24、統(tǒng)退出函數(shù) void _ttywrch(int ch) _value_in_regs struct _initial_stackheap _user_initial_stackheap(unsigned R0, unsigned SP, unsigned R2, unsigned SL) /用戶的堆空間和??臻g函數(shù) 具體定義,可以參考 init/retarget.c (7)接第(6)步,在第(4)步中如果不選擇簡單的連接地址設(shè)置,則需按圖 1-24 所示設(shè)置 C 編譯器。在 Debug Settings 對話框中選擇 ARM C Compiler 項,在 ATPCS 選項 卡中選擇 ARM/T

25、hump interwork,或者在命令行中添加-apcs /interwork。 圖 2-24 設(shè)置 ARM C Compiler (8) 接第(5)步,若在第四步中如果選擇簡單的地址連接設(shè)置,在 Debug Settings 對話框中選擇 ARM Linker 項,如圖 1-25。點(diǎn)擊下邊的 Factory setting 按鈕,出現(xiàn) Layout 選項卡(在對 release 版本進(jìn)行設(shè)置時,不用點(diǎn)擊 Factory setting 按鈕) 。在 Layout 選項卡的 Place at beginning of image 框中設(shè)置程序的入口模塊。指定在生成的 代碼中,程序是從 44b

26、init.s 開始運(yùn)行的。Object 設(shè)為 44binit.o,section 設(shè)為 init。 圖 1-25 設(shè)置入口模塊 (9)在 Debug Settings 對話框中選擇 ARM fromELF 項,如圖 1-26。在 Output file name 框中設(shè)置輸出文件名為 system.bin,這就是要下載到開發(fā)板的嵌入式應(yīng)用程序文件。 圖 1-26 設(shè)置輸出文件名 (10)回到如圖 1-19 所示的工程窗口中,選擇 Release 版本,使用 Edit | Release Settings 菜單對 Release 版本進(jìn)行參數(shù)設(shè)置。 (11)參照第(3) 、 (4) 、 (5)

27、、 (6) 、 (7) 、 (8) 、 (9)步在 Release Settings 對話框 中設(shè)置 Release 版本的 Post-linker、連接地址范圍、入口模塊和輸出文件。 (12)回到如圖 1-19 所示的工程窗口中,選擇 Targets 選項卡,如圖 1-27 所示。選 中 DebugRel 版本,按 Del 鍵將其刪除。 圖 1-27 刪除 DebugRel 版本 (13)設(shè)置完成后,可以將該新建的空工程文件作為模板保存以便以后使用。將工程文 件名改為 44B0 ARM Executable.mcp。然后在 ADS1.2 軟件安裝目錄下的 Stationery 目錄下 新建名

28、為 44B0 ARM Executable Image 的模板目錄,再將剛設(shè)置完的 44B0 ARM Executable.mcp 工程模板文件存放到該目錄下即可。這樣以后新建工程的時候如圖 1-17 所示就能看到以 44B0 ARM Executable Image 為名字的模板了。 圖 1-28 顯示 44B0 ARM模板 提示: 1)建議用戶直接將光盤 ADS 實驗下的 TemplateADSStationery 目錄中的 44B0 ARM Executable Image 子目錄直接拷貝到 ADS1.2 安裝目錄下的 Stationery 目錄中,這樣也能 在圖 1-17 所示的新建工

29、程對話框中看到這個模板,其中有已經(jīng)設(shè)置好的針對本開發(fā)板的參 數(shù)。這個模板設(shè)置為 Scattered 版本。 2)如果用戶原來已安裝了 ARM SDT 軟件的話,再安裝 ADS1.2 后可能導(dǎo)致 ARM SDT 不能 正常使用,需要用戶更改系統(tǒng)環(huán)境變量:ARMINC 設(shè)置為%ARMSDTPATH%INCLUDE,ARMLIB 設(shè) 置為 %ARMSDTPATH%LIB,其中%ARMSDTPATH%指 ARM SDT 的安裝目錄。 2建立工程文件 配置好 ARM ADS 針對 UP-ARM3000 的開發(fā)環(huán)境后,可以執(zhí)行菜單 Project | Add Files 把和工程相關(guān)的所有文件加入到工程中

30、。ADS1.2 不能自動按文件類別對這些文件進(jìn)行分類, 需要的話用戶可以執(zhí)行菜單 Project | Create Group 創(chuàng)建文件組,然后分別將不同類的文 件加入到不同的組,以方便管理。如圖 1-29 所示。更為簡單的辦法是,在新建工程時 ADS 創(chuàng)建了和工程同名的目錄,在該目錄下按類別創(chuàng)建子目錄并存放工程文件。選中所有目錄 拖動到任務(wù)欄上的 ADS 任務(wù)條上,不要松開鼠標(biāo)當(dāng) ADS 窗口恢復(fù)后再拖動到工程文件窗口, 松開鼠標(biāo)。這樣 ADS 將以子目錄名建立同名文件組并以此對文件分類。 這里我們把 ADS 版中開發(fā)環(huán)境實驗中的 init 和 STARTUP 兩個目錄拷貝到新建的工程目 錄

31、下,然后選中這兩個目錄,拖動到任務(wù)欄上的 ADS 任務(wù)條上,不要松開鼠標(biāo)當(dāng) ADS 窗口 恢復(fù)后再拖動到工程文件窗口,松開鼠標(biāo)。這樣 ADS 將以 init 和 STARTUP 目錄名建立同名 文件組并以此對文件分類。 圖 1-29 加入工程文件 雙擊圖 1-29 中的 Main.c 打開該文件,可以看到 Main()函數(shù)的內(nèi)容: int main(void) ARMTargetInit(); /開發(fā)版初始化 LCD_Init(); LCD_ChangeMode(DspTxtMode); /轉(zhuǎn)換 LCD 顯示模式為文本顯示 模式 LCD_Cls(); /文本模式下清屏命令 LCD_printf

32、(Hello world!n); /向液晶屏輸出 Uart_Printf(nHello world!n); /向串口輸出 while(1); 提示: 讀者可以查看其他源文件的內(nèi)容以對系統(tǒng)運(yùn)行有所了解??梢园l(fā)現(xiàn) ADS 的文本編輯器 已 經(jīng)有了很大的改善,文本按語法分顏色顯示,讀者可以根據(jù)喜好在 Edit 菜單下的 Preferences 窗口中進(jìn)行設(shè)置。并可以很好的支持中文注釋。 3 進(jìn)行程序的在線仿真、調(diào)試 (1)回到圖 1-29 所示的工程窗口選中 Debug 版本,執(zhí)行菜單 Project | Make 對工程 進(jìn)行編譯連接。在出現(xiàn)的錯誤/警告窗口中選擇某錯誤/警告信息,ADS 會自動打

33、開相應(yīng)源文 件并用箭頭指向出錯的文本行。如果某個源文件被修改,重新編譯時 ADS 會自動同步各文 件的日期信息。 (2)在 ADS 中執(zhí)行菜單 Project | Debug 啟動 ADS1.2 的調(diào)試工具 AXD。 (3)在 AXD 中執(zhí)行菜單 Options | Configure Target 對 AXD 進(jìn)行設(shè)置。如圖 1-30 所 示。選擇 ADP 即遠(yuǎn)程調(diào)試,點(diǎn) Configure 按鈕進(jìn)一步設(shè)置具體參數(shù),如圖 1-31 所示。 圖 1-30 設(shè)置 AXD 參數(shù) (4)在圖 1-31 中點(diǎn) Select 按鈕選擇遠(yuǎn)程連接為 ARM ethernet driver,點(diǎn) Configu

34、re 按鈕輸入仿真器的 IP 地址。如果用戶使用的是并行口仿真器,請輸入 127.0.0.1 即可。 圖 1-31 設(shè)置遠(yuǎn)程連接 (5)等待程序裝載完畢以后,通過 Execute | Go 菜單以及 Execute | Stop(或者工 具欄中的相應(yīng)按鈕)運(yùn)行或暫停程序。程序暫停后在窗口中將顯示出程序暫停的位置。 (6)通過 Execute | Step 菜單(或者工具欄中的相應(yīng)按鈕)可以單步運(yùn)行程序。也可 以使用 Step In、Step Out 菜單命令進(jìn)入或者跳出函數(shù)的調(diào)用。Run To Cursor 命令運(yùn)行到 光標(biāo)位置。 (7)程序停止后可以通過 Processor Views |

35、Sources 菜單查看源文件,并可在適當(dāng) 位置按 F9 設(shè)置端點(diǎn)。 (8)使用在 Processor View 菜單下的 Registers、Variables 和 Memory 命令可以查看 工作寄存器或者內(nèi)存變量。讀者可以逐一地嘗試,為以后調(diào)試程序打下基礎(chǔ)。 提示: 在進(jìn)行調(diào)試時在 ADS 中必須選擇當(dāng)前工程的 Debug 版本,如果選擇 Release 版本則無 法正常調(diào)試程序。但在調(diào)試通過后就必須選擇 Release 版本進(jìn)行編譯連接并將產(chǎn)生的 system.bin 文件復(fù)制到開發(fā)板的 Flash 中。將開發(fā)板上的 Flash 激活作為 U 盤使用的操作 將在下節(jié)中描述。 1.3 超

36、級終端設(shè)置及 BIOS 功能使用 1、運(yùn)行 Windows 系統(tǒng)下的超級終端(HyperTerminal)應(yīng)用程序,新建一個通信終端。 如果要求輸入?yún)^(qū)號、電話號碼等信息請隨意輸入,出現(xiàn)如圖 1-32 所示對話框時,為所建超 級終端取名為 arm,可以為其選一個圖標(biāo)。單擊“確定”按鈕。 圖 1-32 創(chuàng)建超級終端 2、在接下來的對話框中選擇 ARM 開發(fā)平臺實際連接的 PC 機(jī)串口(如 COM1) ,按確定后 出現(xiàn)如圖 1-33 所示的屬性對話框,設(shè)置通信的格式和協(xié)議。這里波特率為,數(shù)據(jù)位 8,無 奇偶校驗,停止位 1,無數(shù)據(jù)流控制。按確定完成設(shè)置。 圖 1-33 設(shè)置串行口 3、完成新建超級終

37、端的設(shè)置以后,可以選擇超級終端文件菜單中的保存,將當(dāng)前設(shè)置 保存為一個特定超級終端到桌面上,以備后用。用串口線將 PC 機(jī)串口和平臺 UART0 正確連 接后,就可以在超級終端上看到程序輸出的信息了,比如本實驗的“Hello world!” 。 4、啟動開發(fā)板,按住開發(fā)板上鍵盤的任意按鍵,使開發(fā)板進(jìn)入 BIOS 設(shè)置狀態(tài)。如圖 1-34 所示。 圖 1-34 系統(tǒng)的 BIOS 設(shè)置程序 5、該畫面上提示了該 BIOS 的版本等信息。Shell Menu 是平臺的檢測菜單,每個條目 的最左邊字母是該功能的快捷鍵,按 PC 機(jī)鍵盤相應(yīng)鍵將執(zhí)行對應(yīng)功能。注意操作時保持超 級終端處于激活狀態(tài),并且 P

38、C 機(jī)鍵盤必須為小寫。 6、用戶可以按超級終端的提示嘗試部分測試功能,其中: l:測試 LCD 的文本和圖形顯示。執(zhí)行該命令后 LCD 上會打出文本提示,然后進(jìn)入圖形 模式并顯示一幅彩色條形圖案,然后在超級終端上看提示按任意鍵返回文本模式,并退出 LCD 測試返回測試菜單。 o:格式化開發(fā)平臺的 16M FLASH,其中的文件將丟失,需要重新拷貝。執(zhí)行該命令后 超級終端上會出現(xiàn)確認(rèn)提示,如果按“y”鍵則會格式化 Flash,之后返回菜單。 n :設(shè)置開發(fā)平臺網(wǎng)卡的 IP 地址,子網(wǎng)掩碼等,下有子菜單。執(zhí)行該命令后出現(xiàn)子菜 單: p:設(shè)置 MAC 地址,執(zhí)行該命令后按提示操作 i:設(shè)置 IP 地

39、址,執(zhí)行該命令后按提示操作,請與所在局域網(wǎng)在同一網(wǎng)段 m:設(shè)置子網(wǎng)掩碼,執(zhí)行該命令后按提示操作 g:設(shè)置網(wǎng)關(guān)的 IP 地址,執(zhí)行該命令后按提示操作 s:保存所設(shè)地址,設(shè)置完 IP 地址等后必須執(zhí)行該命令保存設(shè)置,否則設(shè)置無效 d:設(shè)置默認(rèn)地址 q:退出子菜單,返回到主菜單。 u:激活開發(fā)平臺的 USB 連接,開發(fā)平臺的 Flash 可以作為 U 盤使用,從而可以方便的 將字庫和應(yīng)用程序等文件從 PC 機(jī)拷貝到平臺的 FLASH 中。使用此功能時,必須保證 USB 電 纜正確連接。 e:測試由 ZLG7289 驅(qū)動的 LED 顯示,共分 3 步,請看超級終端提示按任意鍵繼續(xù),同 時觀察 LED

40、的變化,最后返回主菜單。 k:測試由 ZLG7289 控制的鍵盤掃描,執(zhí)行該命令后按開發(fā)平臺的鍵盤,看超級終端的 鍵名顯示,而在超級終端上按 PC 鍵盤任意鍵則退出測試返回菜單。 s:測試開發(fā)平臺觸摸屏,觸摸屏有動作時在超級終端上會顯示動作類型和坐標(biāo)。按 PC 鍵盤任意鍵后,再點(diǎn)一下觸摸屏即可退出測試并返回主菜單。 h:設(shè)置觸摸屏的坐標(biāo)基準(zhǔn)點(diǎn),也就是校屏功能。需要按提示點(diǎn)擊觸摸屏的 3 個位置并 保存結(jié)果。 a:測試開發(fā)平臺的 AD 電路,執(zhí)行該命令后調(diào)節(jié)平臺的 4 個電位器,在超級終端上顯 示 AD0AD3 的數(shù)值。按 PC 鍵盤任意鍵退出測試并返回。 d:測試開發(fā)平臺的 DA 電路,在超級

41、終端顯示電壓值,需要用電壓表測量平臺 DA 輸出 端子。按 PC 鍵盤任意鍵退出測試并返回。 t:設(shè)置開發(fā)平臺的 RTC 時間參數(shù),該時間由開發(fā)平臺上的鈕扣電池保證持續(xù)計時。請 按提示確認(rèn)修改時間并分別輸入時間。設(shè)置完成合需要保存,否則設(shè)置參數(shù)無效。 i:測試平臺的音頻電路,執(zhí)行該命令后可以聽到一段從平臺揚(yáng)聲器發(fā)出的音樂。請適 當(dāng)調(diào)節(jié)音量電位器。 m:測試平臺的兩個電機(jī),需要打開電機(jī)附近的電機(jī)電源開關(guān),按提示分別測試直流電 機(jī)和步進(jìn)電機(jī)。 c:測試平臺的 CAN 控制器。執(zhí)行該命令在超級終端顯示 CAN 控制器 ID,正常應(yīng)該顯示 1234 或 0000。 b:引導(dǎo) FLASH 中的應(yīng)用程序

42、system.bin。執(zhí)行該功能將退出 BIOS 狀態(tài),把控制交給 應(yīng)用程序。 7、按 PC 鍵盤的 u 鍵(要使超級終端處于活動狀態(tài)) ,這時超級終端上會顯示如圖 1- 35 所示的信息。 圖 1-35 進(jìn)入 U 盤狀態(tài) 8、這時,在“我的電腦”中可以發(fā)現(xiàn)多了一個“可移動磁盤” ,這就是開發(fā)板的海量存 儲器 16M 非線性 Flash。開發(fā)平臺的 Flash 芯片就像一個 U 盤,可以通過“我的電腦”進(jìn)行 操作??梢园丫幾g后生成的 system.bin 文件通過 USB 下載到嵌入式開發(fā)板中,復(fù)位系統(tǒng), 運(yùn)行并檢查輸出結(jié)果。 提示: system.bin 文件是系統(tǒng)通過 BIOS 引導(dǎo)以后,

43、裝入內(nèi)存中運(yùn)行的默認(rèn)文件名。所以上文 中對工程的設(shè)置都使用該文件名作為編譯最終文件。SDT 環(huán)境中,system.bin 文件產(chǎn)生在 工程路徑下的 Debug 和 Release 目錄下;ADS 環(huán)境中,該文件產(chǎn)生在工程路徑下的 ProjectName_DataDebug 和 Release 目錄下。建議將 Release 下的 system.bin 文件拷貝的 到 U 盤。 第二章 嵌入式系統(tǒng)硬件驅(qū)動基礎(chǔ)開發(fā)案例 2.1 ARM 的串行口實驗 一、實驗?zāi)康?掌握 ARM 的串行口工作原理。 學(xué)習(xí)編程實現(xiàn) ARM 的 UART 通訊。 掌握 CPU 利用串口通訊的方法。 二、實驗內(nèi)容 學(xué)習(xí)串行

44、通訊原理,了解串行通訊控制器,閱讀 ARM 芯片文檔,掌握 ARM 的 UART 相關(guān) 寄存器的功能,熟悉 ARM 系統(tǒng)硬件的 UART 相關(guān)接口。編程實現(xiàn) ARM 和計算機(jī)實現(xiàn)串行通訊: ARM 監(jiān)視串行口,將接收到的字符再發(fā)送給串口(計算機(jī)與開發(fā)平臺是通過超級終端通 訊的) ,即按 PC 鍵盤通過超級終端發(fā)送數(shù)據(jù),開發(fā)平臺將接收到的數(shù)據(jù)再返送給 PC,在超 級終端上顯示。 三、預(yù)備知識 1用 ARM SDT 2.5 或 ADS1.2 集成開發(fā)環(huán)境,編寫和調(diào)試程序的基本過程。 2ARM 應(yīng)用程序的框架結(jié)構(gòu)。 3了解串行總線 四、實驗設(shè)備及工具 硬件:ARM 嵌入式開發(fā)平臺、用于 ARM7TD

45、MI 的 JTAG 仿真器、PC 機(jī) Pentium100 以上、 串口線。 軟件:PC 機(jī)操作系統(tǒng) win98、Win2000 或 WinXP、ARM SDT 2.51 或 ADS1.2 集成開發(fā)環(huán) 境、仿真器驅(qū)動程序、超級終端通訊程序。 五、實驗原理及說明 1異步串行 IO 異步串行方式是將傳輸數(shù)據(jù)的每個字符一位接一位(例如先低位、后高位)地傳送。數(shù) 據(jù)的各不同位可以分時使用同一傳輸通道,因此串行 IO 可以減少信號連線,最少用一對 線即可進(jìn)行。接收方對于同一根線上一連串的數(shù)字信號,首先要分割成位,再按位組成字 符。為了恢復(fù)發(fā)送的信息,雙方必須協(xié)調(diào)工作。在微型計算機(jī)中大量使用異步串行 IO

46、 方 式,雙方使用各自的時鐘信號,而且允許時鐘頻率有一定誤差,因此實現(xiàn)較容易。但是由 于每個字符都要獨(dú)立確定起始和結(jié)束(即每個字符都要重新同步),字符和字符間還可能有 長度不定的空閑時間,因此效率較低。 圖 2-1 串行通信字符格式 圖 2-1 給出異步串行通信中一個字符的傳送格式。開始前,線路處于空閑狀態(tài),送出 連續(xù)“1” 。傳送開始時首先發(fā)一個“”作為起始位,然后出現(xiàn)在通信線上的是字符的二 進(jìn)制編碼數(shù)據(jù)。每個字符的數(shù)據(jù)位長可以約定為 5 位、6 位、7 位或 8 位,一般采用 ASCII 編碼。后面是奇偶校驗位,根據(jù)約定,用奇偶校驗位將所傳字符中為“1”的位數(shù)湊成奇數(shù) 個或偶數(shù)個。也可以約

47、定不要奇偶校驗,這樣就取消奇偶校驗位。最后是表示停止位的 “1”信號,這個停止位可以約定持續(xù) 1 位、1.5 位或 2 位的時間寬度。至此一個字符傳送 完畢,線路又進(jìn)入空閑,持續(xù)為“1” 。經(jīng)過一段隨機(jī)的時間后,下一個字符開始傳送才又 發(fā)出起始位。 每一個數(shù)據(jù)位的寬度等于傳送波特率的倒數(shù)。微機(jī)異步串行通信中,常用的波特率為 50,95,110,150,300,600,1200,2400,4800,9600,等。 接收方按約定的格式接收數(shù)據(jù),并進(jìn)行檢查,可以查出以下三種錯誤: 1)奇偶錯:在約定奇偶檢查的情況下,接收到的字符奇偶狀態(tài)和約定不符。 2)幀格式錯:一個字符從起始位到停止位的總位數(shù)不對

48、。 3)溢出錯:若先接收的字符尚未被微機(jī)讀取,后面的字符又傳送過來,則產(chǎn)生溢出錯。 每一種錯誤都會給出相應(yīng)的出錯信息,提示用戶處理。 串行接口的物理層標(biāo)準(zhǔn) 通用的串行 IO 接口有許多種,現(xiàn)僅就最常見的兩種標(biāo)準(zhǔn)作簡單介紹。 1)EIA RS232C 這是美國電子工業(yè)協(xié)會推薦的一種標(biāo)準(zhǔn)(Electronic industries Association Recoil-mended Standard)。它在一種 25 針接插件(DB25)上定義了串行通信的有關(guān)信號。 這個標(biāo)準(zhǔn)后來被世界各國所接受并使用到計算機(jī)的 IO 接口中。 信號連線 在實際異步串行通信中,并不要求用全部的 RS232C 信號,

49、許多 PCXT 兼容機(jī)僅用 15 針接插件(DB15)來引出其異步串行 IO 信號,而 PC 中更是大量采用 9 針接插件(DB 9)來擔(dān)當(dāng)此任,因此這里也不打算就 RS232C 的全部信號作詳細(xì)解釋。圖 2-2 給出兩臺微 機(jī)利用 RS232C 接口通信的聯(lián)線(無 MODEM),我們按 DB25 的引腳號標(biāo)注各個信號。 下面對圖 2-2 中幾個主要信號作簡要說明。 保護(hù)地:通信線兩端所接設(shè)備的金屬外殼通過此線相聯(lián)。當(dāng)通信電纜使用屏蔽線時, 常利用其外皮金屬屏蔽網(wǎng)來實現(xiàn)。由于各設(shè)備往往已通過電源線接通保護(hù)地,因此,通信 線中不必重復(fù)接此地線(圖中用虛線表示)。例如使用 9 針插頭(DB9)的異

50、步串行 IO 接 口就沒有引出保護(hù)地信號。 TXDRXD:是一對數(shù)據(jù)線,TXD 稱發(fā)送數(shù)據(jù)輸出,RXD 稱接收數(shù)據(jù)輸入。當(dāng)兩臺微機(jī)以 全雙工方式直接通信(無 MODEM 方式)時,雙方的這兩根線應(yīng)交叉聯(lián)接(扭接)。 信號地:所有的信號都要通過信號地線構(gòu)成耦合回路。通信線有以上三條(TXD、RXD 和 信號地)就能工作了。其余信號主要用于雙方設(shè)備通信過程中的聯(lián)絡(luò)(握手信號),而且有些 信號僅用于和 MODEM 的聯(lián)絡(luò)。若采取微型機(jī)對微型機(jī)直接通信,且雙方可直接對異步串行 通信電路芯片編程,若設(shè)置成不要任何聯(lián)絡(luò)信號,則其它線都可不接。有時在通信線的同 一端將相關(guān)信號短接以“自握手”方式滿足聯(lián)絡(luò)要求

51、。這就是如圖 2-2(a)所示的情況。 圖 2-2 實用 RS-232C 連線 RTSCTS:請求發(fā)送值號 RTS 是發(fā)送器輸出的準(zhǔn)備好信號。接收方準(zhǔn)備好后送回清除 發(fā)送信號 CTS 后,發(fā)送數(shù)據(jù)開始進(jìn)行,在同一端將這兩個信號短接就意味著只要發(fā)送器準(zhǔn) 備好即可發(fā)送。 DCD:載波檢測(又稱接收線路信號檢測)。本意是 MODEM 檢測到線路中的載波信號后, 通知終端準(zhǔn)備接收數(shù)據(jù)的信號,在沒有接 MODEM 的情況下,也可以和 RTS、CTS 短接。 相對于 MODEM 而言,微型機(jī)和終端機(jī)一樣被稱為數(shù)據(jù)終端 DTE(Data Terminal Equipment)而 MODEM 被稱為數(shù)據(jù)通信裝

52、置 DCE(Data Communications Equipment),DTE 和 DCE 之間的連接不能像圖 2-2 中有“扭接”現(xiàn)象,而應(yīng)該是按接插件芯號,同名端對應(yīng)相接。 此處介紹的 RS232C 的信號名稱及信號流向都是對 DTE 而言的。 DTRDSR:數(shù)據(jù)終端準(zhǔn)備好時發(fā) DTR 信號,在收到數(shù)據(jù)通信裝置裝備好 DSR 信號后, 方可通信。圖 2-2(a)中將這一對信號以“自握手”方式短接。 R1:原意是在 MODEM 接收到電話交換機(jī)有效的撥號時,使 RI 有效,通知數(shù)據(jù)終端準(zhǔn)備 傳送。在無 MODEM 時也可和 DTR 相接。 圖 2-2(b)給出了無 MODEM 情況下,DT

53、E 對 DTE 異步串行通信線路的完整連接,它不僅 適用于微型機(jī)和微型機(jī)之間的通信,還適用于微型機(jī)和異步串行外部設(shè)備(如終端機(jī)、繪圖 儀、數(shù)字化儀等)的連接。 信號電平規(guī)定 RS232C 規(guī)定了雙極性的信號邏輯電平: -3V 到-25V 之間的電平表示邏輯“1” 。 +3V 到+25V 之間的電平表示邏輯“0” 。 因此這是一套負(fù)邏輯定義。 以上標(biāo)準(zhǔn)稱為 EIA 電平。PCXT 系列使用的信號電平是-12V 和+12V,符合 EIA 標(biāo)準(zhǔn), 但在計算機(jī)內(nèi)部流動的信號都是 TTL 電平,因此這中間需要用電平轉(zhuǎn)換電路。常用芯片 MCl488 或 SN75150 將 TTL 電平轉(zhuǎn)換為 EIA 電平

54、,MCl489 或 SN75154 將 EIA 電平轉(zhuǎn)換為 TTL 電平。PCXT 系列以這種方式進(jìn)行串行通信時,在波特率不高于 9600 的情況下,理論上通 信線的長度限制紐為 15 米。 2)20mA 電流環(huán) 20mA 電流環(huán)并沒有形成一套完整的標(biāo)準(zhǔn),主要是將數(shù)字信號的表示方法不使用電子的 高低,而改用 20mA 電流的有無:“1”信號在環(huán)路中產(chǎn)生 20mA 電流;“0”信號無電流產(chǎn) 生。當(dāng)然也需要有電路來實現(xiàn) TTL 電平和 20mA 電流之間的轉(zhuǎn)換。圖 2-3 是 PCXT 微機(jī)中 使用的一種 20mA 電流環(huán)接口。當(dāng)發(fā)送方 SOUT1 時,便有 20mA 電流灌入接收方的光耦合 器,

55、于是光耦合器導(dǎo)通,使 SIN1。反之當(dāng)發(fā)送方 SOUT0 時環(huán)路電流為零,接收方光耦 合器截止,SIN0。顯然,當(dāng)要求雙工方式通信時,雙方都應(yīng)各有收發(fā)電路,通信聯(lián)線至 少要 4 根。由于通信雙方利用光耦合器實現(xiàn)電氣上隔離,而且信號又是雙端回路方式,故 有很強(qiáng)的抗干擾性,可以傳送遠(yuǎn)至 1 千米的距離。 圖 2-3 20mA 電流環(huán)接口 “0” 、 “1”信號的表示方法不同外,其他方面(如字符的傳輸格式)常借用 RS232C 標(biāo) 準(zhǔn)。因此 PCXT 微機(jī)中的異步串行信道接口往往將這兩種標(biāo)準(zhǔn)做在一起,實際通過跨接線 從二者中擇一使用。 3ARM 自帶的串行口寄存器 ARM 自帶兩個串行口,各帶有 1

56、6 字節(jié)的 FIFO(先入先出寄存器) ,最大波特率 115.2K。每個 UART 有 7 種狀態(tài):溢出錯誤、校驗錯誤、幀錯誤、暫停態(tài)、接收緩沖區(qū)準(zhǔn)備 好、發(fā)送緩沖區(qū)空、發(fā)送移位緩沖器空,這些狀態(tài)可以由相應(yīng)的 UTRSTATn/UERSTATn 表示, 并且與發(fā)送接收緩沖區(qū)相對應(yīng)的有錯誤緩沖區(qū)。波特率的可以通過控制波特率寄存器 (UBRDIVn)控制, 與 UART 有關(guān)的寄存器主要有以下幾個: (1)UART 線性控制寄存器 ULCONn,其地址和各位的意義參見表 2-1: 表 2-1 ULCONn 功能定義 ULCONnULCONn 位位描述描述初始化狀態(tài)初始化狀態(tài) 保留 70 紅外模式

57、6 紅外模式位決定是否使用紅外模式:0正常模式;1 紅外模式 0 奇偶校驗?zāi)J?5:3 奇偶校驗?zāi)J街付ó?dāng)UART執(zhí)行發(fā)送和接收操作時如何進(jìn) 行奇偶校驗的產(chǎn)生和檢查: 0 xx無奇偶校驗;100奇 校驗; 110 = 奇偶校驗強(qiáng)制為1;111 = 奇偶校驗強(qiáng)制 為 0 000 停止位個數(shù) 2 每幀停止位的個數(shù):01位;1兩位。 0 數(shù)據(jù)位長度 1:0 字長位決定每幀發(fā)送或接收的數(shù)據(jù)位數(shù):005位;01 6位;107位;118位; 00 由上表可以看出,該寄存器的第 6 位決定是否使用紅外摸式,位 53 決定校驗方式, 位 2 決定停止位長度,位 1 和決定每幀的數(shù)據(jù)位數(shù)。 參考:普通模式,無奇

58、偶校驗,1 位停止位,8 為數(shù)據(jù)長度。 (2)UART 控制寄存器 UCONn,該寄存器決定 UART 的各種摸式。UART FIFO 控制寄存器 UFCONn,UART MODEM 控制寄存器,分別決定 UART FIFO 和 MODEM 的模式。其中 UFCONn 的第 0 位決定是否啟用 FIFO,UMCONn 的第 0 位是請求發(fā)送位,對我們來說是比較重要的??刂?寄存器 UCONn 的功能定義如表 2-2 所示。 表 2-2 UCONn 功能定義 UCONnUCONn 位位描述描述初始化狀態(tài)初始化狀態(tài) 發(fā)送中斷類型 9 中斷請求類型 0 = Pulse (在發(fā)放緩沖區(qū)變空時立即引發(fā)中

59、斷) 1 = Level (在發(fā)送緩沖區(qū)為空進(jìn)引發(fā)中斷) 0 接收中斷類型 8 中斷請示類型 0= Pulse (接收緩沖區(qū)接收到數(shù)據(jù)時立即引發(fā)中斷) 1=Level (I接收緩沖區(qū)正在接收數(shù)據(jù)時引發(fā)中斷) 0 接收超收中斷 使能 7 在UART的FIFO使能的情況下,使能/禁止接收超時中斷 0 =禁止 1 = 使能 0 接收錯誤狀態(tài) 中斷使能 6 在接收操作時有跳變、幀錯誤、奇偶校驗錯誤和溢出錯誤時, 使能UART產(chǎn)生中斷 0 = 不產(chǎn)生接收錯誤狀態(tài)中斷 1 = 產(chǎn)生接收錯誤狀態(tài)中斷t 0 回送模式 5 設(shè)置回送位為1,使得UART進(jìn)入回送模式。這個模式只是為了 檢測。0=標(biāo)準(zhǔn)操作 1=回送

60、模式。 0 發(fā)送中止信號 4 設(shè)置這個位使得UART在1幀的時間里發(fā)送一個終止信號。在發(fā) 送完終止信號后該位自動清零。0=標(biāo)準(zhǔn)傳輸 1=發(fā)送終止信號。 0 傳輸模式 3:2 這兩個位決定了目前哪個操作過程可以將Tx數(shù)據(jù)寫入到UART 傳輸保持寄存器。00=不可以 01=中斷請求或查詢模式 10=BDMAO 請求(只對于UART0) 11=BDMA1請求(只對于 UART1)。 00 接收模式 1:0 這兩個位決定了目前哪個操作過程可以從UART接收緩沖寄存 器讀取數(shù)據(jù)。00=不可以 01=中斷請求或查詢模式 10=BDMAO 要求 11=BDMA1請求。 00 參考:Tx 電平觸發(fā),Rx 邊沿

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論