1. 程式人生 > 其它 >【第3版emWin教程】第36章 emWin6.x游標

【第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 初學者重要提示

  1. 對於初學者來說,本章節比較簡單,只需知道函式GUI_CURSOR_Show()是用來顯示游標的,函式GUI_CURSOR_Hide()是用來隱藏游標的。
  2. 游標所有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)

實驗目的:

  1. 學習emWin的游標,可以手動觸控介面來看游標的移動。
  2. 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實驗_游標(裸機)

實驗目的:

  1. 學習emWin的游標,可以手動觸控介面來看游標的移動。
  2. 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