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