【第3版emWin教程】第36章 emWin6.x游標
教程不斷更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429
第36章 emWin6.x游標
本期教程比較簡單,給大家講解游標(遊標)的使用。在小型的嵌入式系統中,外接滑鼠和鍵盤的情況比較少,所以游標的使用就顯得不那麼重要,不過在需要觸控校準的時候游標就比較重要了,可以幫助我們很方便的看出X,Y軸映象和翻轉問題。
36.1初學者重要提示
36.2 emWin支援的遊標效果
36.3 模擬器上的游標例程
36.4 實驗例程說明(RTOS)
36.5 實驗例程說明(裸機)
36.6 總結
36.1 初學者重要提示
- 對於初學者來說,本章節比較簡單,只需知道函式GUI_CURSOR_Show()是用來顯示游標的,函式GUI_CURSOR_Hide()是用來隱藏游標的。
- 游標所有API函式在emWin手冊中都有講解,下圖是中文版手冊裡面API函式的位置
下圖是英文版手冊裡面API函式的位置:
36.2 emWin支援的游標效果
當前emWin支援的遊標效果就是上面幾種,初始化emWin後是不顯示遊標的,需要呼叫函式GUI_CURSOR_Show()才會顯示出來,預設顯示出來的是GUI_CursorArrowM(中箭頭)。要選擇其它的箭頭可以呼叫函式GUI_CURSOR_Select()進行選擇其它的箭頭。STemWin進入到5.22版本後加入了動態的遊標,效果如下:
36.3 模擬器上的游標例程
官方有一個例子是專門的演示遊標的,將游標的各個API函式都演示了一遍,程式位置在:
對於這個例子,在我們emWin教程第1版的第23章簡單進行了講解,還有動態游標的顯示也做講解了,本次新升級的教程不再做講解。
36.4 實驗例程說明(RTOS)
配套例子:
V7-548_emWin6.x實驗_游標(RTOS)
實驗目的:
- 學習emWin的游標,可以手動觸控介面來看游標的移動。
- emWin功能的實現在MainTask.c檔案裡面。
實驗內容:
1、K1按鍵按下,串列埠或者RTT列印任務執行情況(串列埠波特率115200,資料位8,奇偶校驗位無,停止位1)。
2、(1) 凡是用到printf函式的全部通過函式App_Printf實現。
(2) App_Printf函式做了訊號量的互斥操作,解決資源共享問題。
3、預設上電是通過串列埠列印資訊,如果使用RTT列印資訊:
MDK AC5,MDK AC6或IAR通過使能bsp.h檔案中的巨集定義為1即可
#define Enable_RTTViewer 1
4、各個任務實現的功能如下:
App Task Start 任務 :啟動任務,這裡用作BSP驅動包處理。
App Task MspPro任務 :訊息處理,這裡用作LED閃爍。
App Task UserIF 任務 :按鍵訊息處理。
App Task COM 任務 :暫未使用。
App Task GUI 任務 :GUI任務。
μCOS-III任務除錯資訊(按K1按鍵,串列埠列印):
RTT 列印資訊方式:
程式設計:
任務棧大小分配:
μCOS-III任務棧大小在app_cfg.h檔案中配置:
#define APP_CFG_TASK_START_STK_SIZE 512u
#define APP_CFG_TASK_MsgPro_STK_SIZE 2048u
#define APP_CFG_TASK_COM_STK_SIZE 512u
#define APP_CFG_TASK_USER_IF_STK_SIZE 512u
#define APP_CFG_TASK_GUI_STK_SIZE 2048u
任務棧大小的單位是4位元組,那麼每個任務的棧大小如下:
App Task Start 任務 :2048位元組。
App Task MspPro任務 :8192位元組。
App Task UserIF 任務 :2048位元組。
App Task COM 任務 :2048位元組。
App Task GUI 任務 :8192位元組。
系統棧大小分配:
μCOS-III的系統棧大小在os_cfg_app.h檔案中配置:
#define OS_CFG_ISR_STK_SIZE 512u
系統棧大小的單位是4位元組,那麼這裡就是配置系統棧大小為2KB
emWin動態記憶體配置:
GUIConf.c檔案中的配置如下:
#define EX_SRAM 1/*1 used extern sram, 0 used internal sram */ #if EX_SRAM #define GUI_NUMBYTES (1024*1024*24) #else #define GUI_NUMBYTES (100*1024) #endif
通過巨集定義來配置使用內部SRAM還是外部的SDRAM做為emWin的動態記憶體,當配置:
#define EX_SRAM 1 表示使用外部SDRAM作為emWin動態記憶體,大小24MB。
#define EX_SRAM 0 表示使用內部SRAM作為emWin動態記憶體,大小100KB。
預設情況下,本教程配套的所有emWin例子都是用外部SDRAM作為emWin動態記憶體。
emWin介面顯示效果:
800*480解析度介面效果。
36.5 實驗例程說明(裸機)
配套例子:
V7-547_emWin6.x實驗_游標(裸機)
實驗目的:
- 學習emWin的游標,可以手動觸控介面來看游標的移動。
- emWin功能的實現在MainTask.c檔案裡面。
emWin介面顯示效果:
800*480解析度介面效果。
emWin動態記憶體配置:
GUIConf.c檔案中的配置如下:
#define EX_SRAM 1/*1 used extern sram, 0 used internal sram */ #if EX_SRAM #define GUI_NUMBYTES (1024*1024*24) #else #define GUI_NUMBYTES (100*1024) #endif
通過巨集定義來配置使用內部SRAM還是外部的SDRAM做為emWin的動態記憶體,當配置:
#define EX_SRAM 1 表示使用外部SDRAM作為emWin動態記憶體,大小24MB。
#define EX_SRAM 0 表示使用內部SRAM作為emWin動態記憶體,大小100KB。
預設情況下,本教程配套的所有emWin例子都是用外部SDRAM作為emWin動態記憶體。
36.6 總結
遊標顯示的知識就跟大家講這麼多,相對來說比前面幾期都要簡單很多,實際應用中知道如何將其顯示出來即可。
微信公眾號:armfly_com 安富萊論壇:www.armbbs.cn 安富萊淘寶:https://armfly.taobao.com