教程不斷更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429
第34章 emWin6.x的AppWizard界面開發工具使用方法
本期教程跟大家講解emWin6.x新版GUIBuilder工具AppWizard。掌握AppWizard比較容易,大家很快就可以上手,僅需注意使用上的一些坑即可。
34.1 初學者重要提示
34.2 AppWizard介紹
34.3 AppWizard創建界面
34.4 AppWizard生成的VS工程使用VS2019運行方法
34.5 AppWizard創建的界面添加到工程
34.6 實驗例程說明(RTOS)
34.7 實驗例程說明(裸機)
34.8 總結
34.1 初學者重要提示
1、 使用的AppWizard版本一定要和emWin版本匹配,本章配套例子使用的emWin版本是V6.16。對應的AppWizard版本是V1.20,下載地址:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=105049 。
2、 AppWizard工程路徑不支持中文,使用時特別注意。
3、 AppWizard生成的emWin6.x工程可以方便的融合之前的低版本emWin工程代碼,在回調函數里面可以方便的添加之前基於窗口或者對話框創建的界面。
34.2 AppWizard簡介
AppWizard是emWin出的新一代GUI開發工具,方便用戶做界面設計。早期一直用的GUIBuilder,但功能比較弱。新版工具要強很多。
34.3 AppWizard創建界面
下面使用AppWizard設計個界面,然后將設計的界面移植到板子上運行,讓大家有個整體的認識,后面章節再為大家說明AppWizard具體選項的功能。
34.3.1 下載安裝AppWizard
下載地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=105049 。安裝后效果如下:
34.3.2 創建AppWizard工程
選擇Create new project:
下面要需要設置配置項,主要是Color format顏色格式別配置錯了,要跟開發板emWin工程的顏色格式一致,我們這里設置為16位色,M565。
創建后效果如下:
34.3.3 添加控件
依次點擊左上角的控件對象:Screen和Box:
設置背景色:
添加兩個按鈕控件和一個二維碼:
34.3.4 設置默認的位圖格式
點擊菜單Edit -> Preferences:
由於我們前面設置的M565顏色格式,這里設置GUICC_M565選項即可:
這個設置很重要,否則很容易造成AppWizard生成的工程代碼移植到板子上硬件異常。
34.3.5 運行AppWizard
點擊下面這個小按鈕可以運行設計的界面:
34.3.6 導出AppWizard代碼
點擊菜單File -> Export & Save即可導出:
導出文件在創建時設置的路徑中。
34.4 AppWizard生成的VS工程使用VS2019運行方法
導出的VS工程文件位於如下路徑:
運行后效果如下:
34.5 AppWizard創建的界面添加到工程
AppWizard生成界面代碼后,將其添加到工程中。這個過程有幾個注意事項,在下面步驟中會為大家說明。
34.5.1 添加一批xxxx_Private.h文件到工程
開發板的工程文件里面沒有這些文件,需要大家從AppWizard工程路徑:Simulation\GUI_Lib 里面復制到開發板工程路徑\emWin\Include里面,下面是部分截圖,詳情看本章節配套的例子即可:
34.5.2 添加AppWizard界面文件到工程
方便起見,將AppWizard所有文件復制到開發板工程里面:
添加到工程的效果如下:
34.5.3 添加工程路徑
僅添加一個路徑選項即可:
34.5.4 修改程序
主要修改兩個地方:
- bsp.c文件將LCD背光點亮。
void bsp_Init(void) { /* 省略未寫 */ /* 延遲200ms再點亮背光,避免瞬間高亮 */ bsp_DelayMS(200); LCD_SetBackLight(255); }
- APPWConf.c文件
使能三緩沖,關閉文件系統。
/********************************************************************* * * Multibuffering */ static U8 _MultibufEnable = 1; /********************************************************************* * * Static code * ********************************************************************** */ /********************************************************************* * * _InitText */ static void _InitText(void) { // // Empty, because application does not contain any text // } /********************************************************************* * * Public code * ********************************************************************** */ /********************************************************************* * * APPW_X_Setup */ void APPW_X_Setup(void) { APPW_SetpfInitText(_InitText); //APPW_X_FS_Init(); APPW_MULTIBUF_Enable(_MultibufEnable); APPW_SetData(_apRootList, _NumScreens, _aVarList, _NumVars); }
通過前面這幾步就完成了AppWizard工程界面的移植。剩下就可以編程工程代碼下載到板子運行了。
34.6 實驗例程說明(RTOS)
配套例子:
V7-542_emWin6.x實驗_AppWizard基礎使用(RTOS)
實驗目的:
- 學習AppWizard界面設計。
實驗內容:
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分辨率界面效果。
34.7 實驗例程說明(裸機)
配套例子:
V7-541_emWin6.x實驗_AppWizard基礎使用(裸機)
實驗目的:
- 學習emWin矢量字體庫的使用方法,Unicode編碼
- 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動態內存。
34.8 總結
本章節主要是為大家講解了AppWizard的基礎用法,后續章節將深入為大家說明。