emWin在Windows上使用visual studio2019仿真

轉自“野火教程”,親測可用!

 

emWin的Windows仿真版本是免費的,大家可以直接在Segger官網下載, 下載鏈接:https://www.segger.com/downloads/emwin/

下載得到壓縮包的文件名爲:SeggerEval_WIN32_MSVC_MinGW_GUI_V548.zip, 它是emWin 的V5.48版本,本教程中我們就以這個版本爲例子講解。

解壓該壓縮包,其文件內容說明見圖 emWin仿真版本文件 。

emWin仿真版本文件

emWin仿真版本的工程在Windows上是使用Visual c++作爲編譯器的, 而現在Visual c++編譯器一般都集成到Visual Studio開發環境中了, 而且由於VC6.0實在是太老太醜,所以在本教程中野火使用VS 2019 社區版 (Microsoft visualstudio community 2019)作爲開發環境進行, 請讀者自行安裝VS 2019 社區版開發環境。

4.2. 使用VS 2019 社區版仿真emWin

接下來我們介紹一下用VS 2019 社區版仿真emWin的步驟。

1.解壓文件。解壓emWin仿真版本壓縮包,注意解壓後的文件路徑不要出現中文,否則在編譯時會出錯的;

2.打開仿真工程。安裝了VS 2019 社區版集成環境後,打開emWin仿真版本的目錄,找到“SimulationTrial.sln”文件,雙擊打開, 打開後會彈出一個對話框提示VC++版本的問題,直接選擇“確定”即可,見圖 emWin仿真版本的文件

emWin仿真版本的文件

 

3.配置仿真工程屬性。成功打開工程後,右鍵單擊SimulationTrial項目,在彈出的選項中選擇屬性,見圖 配置emWin仿真工程屬性 ;

配置emWin仿真工程屬性

4.在彈出的工程屬性頁面中,展開鏈接器選項,進入輸入設置;

5.在其中的附加依賴項中添加:legacy_stdio_definitions.lib,注意添加分號;

6.在忽略所有默認庫中填:否;

7.在忽略特定默認庫中添加:LIBC.lib;LIBCMTD.lib,具體見圖 配置工程鏈接器輸入屬性 ;

配置工程鏈接器輸入屬性

 

8.接下來轉到鏈接器選項中的高級設置,修改映像具有安全異常處理程序的值爲:否,具體見圖 配置仿真工程鏈接器高級設置 。

配置仿真工程鏈接器高級設置

9.開始編譯工程。工程屬性修改完成後,可以直接按快捷鍵“F5”,或者點擊編譯器中的“本地Windows調試器”按鈕, 編譯並運行工程。接下來就開始了編譯過程,正常的話都會編譯通過,然後彈出一個emWin仿真運行的界面,見圖 運行仿真 。

運行仿真

按照我們以上的步驟,默認編譯的是emWin官方的演示例程,它向我們展示了使用emWin庫製作出來的GUI效果, 跟嵌入式平臺相比,受液晶屏及CPU運行速度的影響,一般其效果會好一些,讀者可親自品味一下。部分仿真效果圖見圖 emWin演示例程仿真效果圖 。

emWin演示例程仿真效果圖

4.3. emWin仿真文件概覽

現在我們來看看emWin仿真工程裏的文件,它主要包含了Application、Config、GUI、 Simulation目錄及一些外部依賴項文件,見圖 emWin仿真工程文件介紹 。

emWin仿真工程文件介紹

從V5.38版本開始,emWin仿真工程的文件內容和結構出現了較大變化,下面我們就來介紹一下該工程下的各類文件。

1、Application文件夾

Application文件夾是默認演示例程的應用文件包。在上一個小節中,我們編譯的文件都是在這個Application目錄下的, 它包含了一個官方演示例程的應用文件,展開Application目錄後,可以到這些文件命名都很規範,文件內容一目瞭然。 讀者如果看到很炫酷的示例,可以到這裏找找它的源代碼來學習(綜合演示例程學習難度較大,適合有一定emWin基礎的用戶)。 emWin仿真工程附帶了8個官方演示例程,除了默認啓動的例程以外, 其餘的演示例程路徑位於:\Sample\Application中, Application文件列表見圖 Application目錄下的文件 。

Application目錄下的文件

2、Config文件夾

Config文件夾是顯示配置文件包。在Config文件夾下,有GUIConf.c、GUIConf.h、LCDConfig.c、LCDConfig.h及SIMConfig.c文件, 其中前三個文件在實際的嵌入式平臺是非常重要的,它們分別起到了分配存儲空間、裁剪emWin功能模塊和LCD底層驅動實現。 而LCDConfig.h文件沒有內容,SIMConfig.c文件是VS 2019 社區版仿真環境需求的一些特定設置,在此我們不作探討。 

GUIConf.c文件主要包含了一個GUI_X_Config函數,在這個函數中向系統申請了一個大小爲2.5MB(0x280000) 的靜態空間aMemory, 接着調用emWin的庫函數GUI_ALLOC_AssignMemory把這個空間分配給emWin。所以emWin的庫函數使用的存儲空間都是aMemory中分配的。 在嵌入式平臺上,我們需要根據其限制控制分配給emWin庫的aMemory大小,修改宏GUI_NUMBYTES即可。 

GUIConf.h文件聚集了各種與emWin功能裁剪相關的宏,如GUI_NUM_LAYERS用於配置emWin的最大可用層數(多顯示器及複合視圖支持), GUI_OS用於告訴emWin是否運行在帶多任務系統的平臺上等等,通過設置這些宏,可以方便地根據需要裁剪emWin的大小。

LCDConfig.c文件包含了LCD_X_Config和LCD_X_DisplayDriver兩個函數。LCD_X_Config函數調用emWin庫函數GUI_DEVICE_CreateAndLink配置了顯示驅動及顏色轉換格式, 該函數的輸入參數是根據Windows系統的環境配置的。接着調用LCD_SetSizeEx配置了顯示尺寸,輸入參數是本文件中的兩個宏: #define XSIZE_PHYS 800 及 #define YSIZE_PHYS 480,也就是說把屏幕配置成了800*480分辨率大小, 我們可以通過修改這兩個宏的數值改變仿真時的屏幕尺寸。

LCD_X_DisplayDriver是提供給emWin庫的驅動回調函數,該函數根據輸入的參數Cmd區分要進行的操作,如LCD_X_INITCONTROLLER表示初始化液晶控制器, LCD_X_ON 表示啓動液晶屏,LCD_X_OFF表示關閉液晶屏,這些命令是由用戶根據需要選擇性實現的。

在使用emWin的應用函數之前,我們需要調用其庫函數GUI_Init初始化emWin運行的環境,而GUI_Init函數會執行我們前面提到的GUI_X_Config、LCD_X_Config、 LCD_X_DisplayDriver三個函數,從而完成初始化工作。當我們移植emWin時,主要的移植工作就是根據自己的平臺實現這些函數,而emWin的上層應用函數無需修改, 也無法修改,因爲那些函數都已經編譯進庫裏了,不開放源碼。

3、GUI文件夾

GUI文件夾是emWin庫核心文件包。它包含一個Include文件夾和一個Library文件夾,在Include文件夾裏的都是emWin庫的頭文件,由於emWin以庫的形式提供給用戶, 所以必須帶有這些頭文件以方便我們使用。Library目錄下的GUI.lib就是emWin的庫文件了,它是編譯好的二進制編碼,無法查看源程序。在不同的CPU平臺下, 需要使用不同版本的庫,如這個工程裏的GUI.lib庫僅可以用在windows的VC++編譯平臺下,針對Cortex-M0、M3和M4芯片及IAR、MDK編譯環境都有相對應的庫文件, 使用時要根據自己的平臺選擇適當的庫文件。

4、Sample文件夾

Sample文件夾是emWin的基礎應用示例程序包。我們使用仿真的一個重要目的就是學習這個文件夾下的工程代碼。此文件夾從仿真工程的V5.38版本開始不再包含在工程中, 文件結構也有所變化。目前的Sample文件夾包含3個子文件夾:Application,Tutorial和WinMain。這裏的Application文件夾包含着另外7個官方演示例程, Tutorial文件夾內提供的都是一個個很小的工程,簡化了學習的難度,而且這個文件夾下提供的應用示例更加豐富,基本上涵蓋了emWin庫提供的所有功能, 當我們在emWin參考手冊中看到某些功能不會使用時,可以來這裏找找,一般都能找到示例程序,WinMain文件夾則是一些模擬器相關的文件,我們不作討論。 Sample文件夾組成內容見圖 Sample文件介紹 。

Sample文件介紹

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章