ARM的綜合實(shí)驗
ARM的綜合實(shí)驗
一、實(shí)驗目的
學(xué)習做一個(gè)復雜的應用程序的方法和程序結構,結合應用以前16 次實(shí)驗所學(xué)到的知識,
編寫(xiě)一個(gè)比較綜合的應用。
二、實(shí)驗內容
用一個(gè)列表框作為主菜單,通過(guò)鍵盤(pán)可以選擇功能,主要的功能有:顯示bmp 文件、
設定系統時(shí)間、USB 下載。同時(shí),使用文本框控件作為系統的一個(gè)狀態(tài)條,顯示提示信息
和系統的時(shí)間。
三、預備知識
1、用ARM SDT 2.5 集成開(kāi)發(fā)環(huán)境,編寫(xiě)和調試程序的基本過(guò)程。
2、基于操作系統的應用程序的框架結構。
3、會(huì )使用Source Insight 3 編輯C 語(yǔ)言源程序
4、會(huì )使用消息循環(huán)響應鍵盤(pán)消息
5、會(huì )使用文本框控件和列表框控件
6、會(huì )編寫(xiě)通過(guò)USB 連接下載的程序
7、會(huì )控制系統的時(shí)鐘和多線(xiàn)程
8、會(huì )使用系統的繪圖函數顯示圖片
9、會(huì )使用系統的文件相關(guān)函數列出指定類(lèi)型的文件
四、實(shí)驗設備及工具(包括軟件調試工具)
硬件:ARM 嵌入式開(kāi)發(fā)板、用于A(yíng)RM7TDMI 的JTAG 仿真器、PC 機Pentumn100 以
上
軟件:PC 機操作系統win98、ARM SDT 2.51 集成開(kāi)發(fā)環(huán)境、仿真器驅動(dòng)程序、Source
Insight 3.0、超級終端通訊程序、USB 下載程序
五、實(shí)驗步驟
1、在A(yíng)RM SDT 2.51 中,使用實(shí)驗一中創(chuàng )建好的模板,新建一個(gè)項目work1。把操作
系統的所需要的頭文件(*.h)和庫文件(*.alf)加入工程中。
2、用Source Insight 3 創(chuàng )建一個(gè)工程,把work1 中的C 語(yǔ)言源文件文件加入。
3、打開(kāi)Main.c 文件,在Main_Task 任務(wù)中添加代碼,使系統啟動(dòng)的時(shí)候,創(chuàng )建一個(gè)列
表框作為系統的選項菜單,添加三個(gè)字符串到列表框中,作為功能菜單,包括:繪制圖形、
設置時(shí)間、USB 下載。創(chuàng )建兩個(gè)文本框,其中一個(gè)作為系統的狀態(tài)提示,另一個(gè)用來(lái)顯示
系統時(shí)間。啟動(dòng)消息循環(huán), 響應鍵盤(pán)消息(OSM_KEY)和列表框被改變的消息
(OSM_LISTCTRL_SELCHANGE)。Main_Task 的流程如圖17-1 所示。
4、在Main_Task 任務(wù)中再創(chuàng )建一個(gè)新的任務(wù),此任務(wù)負責實(shí)時(shí)的更新顯示系統的時(shí)間.
其流程圖如圖:17-2 所示。
提示:
1、用CreateTextCtrl 函數創(chuàng )建文本框,SetTextCtrlText 函數設置文本框中的內容。
2、用CreateListCtrl 函數創(chuàng )建列表框,ReLoadListCtrl 函數裝載一組字符串。
3、使用OSTaskCreate 來(lái)創(chuàng )建系統任務(wù)。在uCOS-II 系統中,任務(wù)的優(yōu)先級是不能
相同的。比如:Main_Task 任務(wù)的優(yōu)先級是12,Key_Scan_Task 任務(wù)的優(yōu)先級是56。目
前使用的uCOS-II 的版本只支持64 個(gè)任務(wù),包括,還有8 個(gè)系統任務(wù),用戶(hù)可以使用
的任務(wù)是56 個(gè)。創(chuàng )建任務(wù)的時(shí)候,需要選擇合適的任務(wù)優(yōu)先級(比如:14)。
4、通過(guò)SetTextCtrlEdit 函數設置文本框是否處于編輯狀態(tài),使用TextCtrlDeleteChar
和AppendChar2TextCtrl 函數在文本框中刪除和追加字符。
5、鍵盤(pán)消息是OSM_KEY,列表框選擇改變消息是OSM_LISTCTRL_SELCHANGE
6、使用Rtc_IsTimeChange 函數,判斷系統的時(shí)鐘對應的某一位是否改變。用
Rtc_Format 格式化系統的時(shí)鐘格式得到Unicode 字符串,可以方便的顯示到文本框控件
里。
7、可以使用一個(gè)指針函數的數組裝載系統的各個(gè)功能(繪制圖形、設置時(shí)間、USB
下載)函數,便于管理。如下面的程序所示:
void *MainFunction[]={(void*)OnDrawBmp,(void*)OnSetTime,(void*)OnUsb_Download};
其中,OnDrawBmp,OnSetTime,OnUsb_Download 函數就是對應的繪制圖形、設置
時(shí)間、USB 下載功能函數??梢允褂萌缦鲁绦蛩镜姆椒ㄕ{用指定序列的函數:
( (void (*)(void)) (MainFunction[pMainListCtrl->CurrentSel]) )();
其中,pMainListCtrl 表示指向系統主功能文本框的指針。
7、用ARM SDT 2.5 編譯、下載并調試上述程序,檢查運行結果
8、生成發(fā)行版本的.bin 文件,通過(guò)USB 下載到嵌入式開(kāi)發(fā)板中,運行并檢查輸出結果。
評論