新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 系統的消息循環

        系統的消息循環

        作者: 時間:2011-11-08 來源:網絡 收藏

        一、 實驗目的
        學習使用系統的。掌握如何通過系統的來響應鍵盤的消息,同時學會
        使用圖形模式下的液晶屏文字顯示函數。最終實現按不同的鍵,在屏幕上顯示不同的文字;
        同時,把鍵盤的按鍵號碼輸出到PC 機的終端顯示。
        二、實驗內容
        通常在多任務操作系統中,任務之間的通訊是通過任務之間發送消息來實現的。在本操
        作系統的Main_Task 任務中,定義了一個消息隊列。本次實驗將通過使用這個消息隊列接收
        鍵盤的按鍵消息,并把鍵盤的按鍵顯示在液晶屏和PC 機的終端上。
        三、預備知識
        1、用ARM SDT 2.5 集成開發環境,編寫和調試程序的基本過程。
        2、基于操作系統的應用程序的框架結構。
        3、會使用Source Insight 3 編輯C 語言源程序
        4、操作系統的繪圖API 函數和繪圖設備上下文(DC)的使用
        四、實驗設備及工具(包括軟件調試工具)
        硬件: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 文件,仔細閱讀Key_Scan_Task 函數——系統的鍵盤掃描函數。理解系
        統中Main_Task 任務消息隊列的創建和發送的過程。
        void Key_Scan_Task(void *Id)
        {
        U32 key;
        POSMSG pmsg;
        for (;;){
        key=GetKey();
        pmsg=OSCreateMessage(OSM_KEY,(key+1)0xffff,key>>16);
        if(pmsg)
        SendMessage(pmsg);
        }
        }
        4、在Main_Task 任務中加入代碼,實現。即:等待消息、處理(響應)消息、
        刪除消息。具體的流程圖如圖所示。

        提示:
        ⑴ 使用WaitMessage 接收消息,通常等待時間設置為無限長。
        ⑵ 如圖4-1 所示,系統的消息循環是一個無限循環。
        ⑶ 系統的消息結構定義如下:
        typedef struct {
        U32 Message;
        U32 WParam;
        U32 LParam;
        }OSMSG, *POSMSG;
        收到消息以后(即,WaitMessage 函數返回),通過判斷消息結構中Message 的成
        員來判斷消息類型。如果是鍵盤消息,則Message 的值為OSM_KEY,WParam 參數存
        儲的是按鍵的號碼,LParam 參數存儲的是同時系統按下的功能鍵(如果沒有,則為0)。
        ⑷ 開始等待下一條消息之前必須使用DeleteMessage 刪除消息,釋放系統的內存
        空間。
        5、編寫鍵盤消息響應函數,處理鍵盤的消息。當有鍵盤消息收到的時候,把按鍵號碼
        顯示在液晶屏上,同時,發送給PC 機的終端。
        提示:
        ⑴ 使用TextOut 函數在液晶屏的圖形方式下繪圖。此函數輸出的字符數組必須是
        基于雙字節Unicode 編碼的。
        ⑵ 使用Int2Unicode 函數完成整型變量到Unicode 字符串的轉換。
        ⑶ 通過Uart_SendByte 函數向串行口發送一個字節的數據
        6、用ARM SDT 2.5 編譯、下載并調試上述程序,檢查運行結果
        7、生成發行版本的.bin 文件,通過USB 下載到嵌入式開發板中,運行并檢查輸出結果。



        關鍵詞: 消息循環

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 丹凤县| 广安市| 阿瓦提县| 沽源县| 渭南市| 瑞金市| 雷波县| 多伦县| 万州区| 玛纳斯县| 高碑店市| 海安县| 武邑县| 盖州市| 太原市| 称多县| 若尔盖县| 惠州市| 普格县| 扶沟县| 淮安市| 云南省| 临海市| 东乡族自治县| 奉新县| 固阳县| 剑河县| 平舆县| 曲周县| 城口县| 五原县| 麻城市| 石嘴山市| 江西省| 新津县| 遵义县| 白朗县| 安顺市| 始兴县| 什邡市| 南江县|