教程不斷更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429
第3章 emWin介紹
本章主要介紹emWin的基礎知識。
3.1 STemWin,emWin,μCGUI之間的關系
3.2 emWin介紹
3.3 emWin論壇
3.4 總結
3.1 STemWin,emWin,μCGUI之間的關系
這個放在最開頭進行說明,因為很多的初學者比較迷惑。
3.1.1 emWin和μCGUI的關系
首先要明白,emWin和μCGUI這兩個GUI是同一個東西。最初這個GUI就是SEGGER公司的,然后以什么的方式授權給μCGUI就不清楚了。現在SEGGER公司是這個GUI的主要推動者,已經將其授權給了多個芯片生產廠家。
3.1.2 STemWin和emWin的關系
STemWin是SEGGER公司授權給ST(意法半導體)的。使用ST芯片的用戶可以免費使用STemWin。其實不光授權給了ST,還有NXP,Energy Micro等。凡是使用這些芯片廠商生產的處理器都可以免費的使用emWin。但是出於一定的保護措施,使用STemWin的庫是不能用在其它芯片廠商的處理器上面的。因為在工程初始化STemWin前要使能CRC校驗。如果沒有使能,STemWin是啟動不起來的。
這里STemWin還針對ST的微控制器做了專門的優化,比如在使用ST的F4xx/H7xx微控制器帶FPU的芯片時,STemWin在需要浮點處理的地方專門做了優化。
3.1.3 emWin6.xx版本和以前版本的不同
emWin發展到6.0版本以后進行了很大的更新,特別是性能更強的圖形化創建工具AppWizard。emWin6.xx版本向下完全的兼容低版本,也就是說如果用戶有在emWin6.xx以下版本建立的應用,完全可以在高版本上面實現。
emWin6.xx沒有源碼。想研究源碼的,可以看早期的版本,了解一下消息機制。不過對於大多數從應用角度出發的用戶,完全沒有必要學習源碼,源碼內容太多。一些早期版本無法實現的功能,在emWin6.xx上面得到了很大的改善,支持的控件更多了。如果通過各種方法仍然無法實現,可以使用emWin支持的自定義控件,自定義回調函數或者控件皮膚設置做一個符合要求的。
3.2 emWin介紹
emWin6.xx版本設計出來的界面還是非常漂亮的。為了使大家有一些感官的認識,先來欣賞幾張相關的界面設計圖片。
3.2.1 emWin設計界面
下面是官方提供的應用界面設計效果:




整體來說,這些界面還是非常漂亮的,不過這些界面不是用專門的控件顯示出來的,而是用2D繪圖配合存儲設備實現的。
- 下面是在開發板上實現的界面效果
更多界面效果看此地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=17330
主界面:

音樂播放器界面:

視頻播放界面:

收音機界面:

示波器界面效果:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=45785


3.2.2 emWin目標系統硬件需求
實現emWin的最基本硬件需求如下:
- 一個MCU或者MPU(8/16/32/64位)且RAM和Flash大小要滿足emWin最小需求。
- 一個圖形顯示器 (任何類型和任何分辨率)。
Flash和RAM的使用大小取決於用戶所使用的STemWin的功能以及編譯器的效率。因此不可能指定精確的值,但是以下值適用於典型的系統。
未使用窗口管理器時
- RAM:100字節
- 堆棧:600字節
- Flash:10-25 kb(取決於所使用的功能)
使用窗口管理器和控件時
- RAM:2-6 kb(取決於所需的窗口數)
- 堆棧:1200-1800字節 (取決於所使用的功能)
- Flash:30-60 kb(取決於所使用的功能)
請注意,如果應用程序使用了很多字體,則對ROM的要求會提高。上述所有值都是粗略估算值,不保證能正常使用。
3.2.3 emWin特性
emWin提供了高效且獨立於處理器和顯示控制器的圖形用戶界面,可用於任何使用圖形顯示進行操作的應用。它與單任務和多任務環境、專用操作系統或任何商業RTOS均兼容,emWin的發布形式為C語言源代碼。它可適用於任何尺寸的、具有任何顯示控制器,不管是物理的還是虛擬的顯示器。其特性包括:
【一般特性】
- 支持使用任何控制器的任何(單色、灰度或彩色)顯示器 (如果有正確的驅動)。
- 在較小的顯示器上無顯示控制器也可運行。
- 使用配置宏可支持任何接口。
- 顯示尺寸可配置。
- 可在顯示器上的任何點(而不僅僅是在偶數位字節地址)上寫入字符和位圖。
- 已經針對尺寸和速度對程序進行了優化。
- 對於較慢的顯示控制器,可在存儲器中緩存顯示,將存取操作減到最少,從而獲得非常高的速度。
- 結構清晰。
- 支持虛擬顯示,虛擬顯示可大於實際顯示。
【圖形庫】
- 支持不同顏色深度的位圖。
- 可使用位圖轉換器。
- 絕對無浮點使用。
- 快速線/點繪制 (不使用浮點)。
- 圓形/多邊形繪制非常快速。
- 不同的繪圖模式。
【字體】
- 基本軟件配備多種不同的字體:4*6、6*8、6*9、8*8、8*9、8*16、8*17、8*18、24*32以及像素高度為8、10、13、16的比例字體。
- 可以定義新的字體。
- 只有應用程序使用的字體才鏈接到可執行程序里,從而使Flash使用最小。
- 字體可在X和Y方向完全縮放。
- 可使用字體轉換器,主機系統 (即Microsoft Windows)上有的任何字體都可以轉換。
【字符串/值輸出函數】
- 函數可以十進制、二進制、十六進制、任何字體形式顯示值。
- 函數可以十進制、二進制、十六進制、任何字體形式編輯值。
【窗口管理器(WM)】
- 完整的窗口管理操作,包括裁剪。窗口的客戶區以外的區域不可能被覆蓋。
- 窗口可以移動和調整大小。
- 支持回調函數(可選擇是否使用)。
- 窗口管理器使用最小的RAM(每個窗口大約50字節)。
【PC界面外觀的可選控件】
- 提供各種控件,它們通常自動操作並且簡單易用。
【支持觸摸屏和鼠標】
- 對於控件,emWin提供觸摸屏和鼠標支持。
【PC工具】
- 模擬查看器。
- 位圖轉換器。
- 字體轉換器。
3.2.4 RTOS對emWin多任務的支持
基本常見的RTOS都支持emWin的多任務,移植起來也比較簡單,下面這些是官方提供好的移植。
這些移植好的接口文件在MDK的安裝目錄里面,以MDK5.34版本為例,所在的路徑為:
\Keil\MDK-Middleware\7.12.0\emWin\Sample\GUI_X。
3.2.5 emWin基本的內存需要

這個只是官方提供的基本數據,僅供參考,具體還要看實際應用。
3.2.6 emWin當前支持的控件
由於emWin在不斷的更新當中,這里是當前支持的大部分控件,但不是全部。




3.3 emWin論壇
我們有自己建立的論壇版塊:
http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12 。
當然,SEGGER官方也有自己的emWin論壇,地址:http://forum.segger.com/。
3.4 總結
關於emWin的介紹就跟大家介紹這么多,更詳細的可以上我們的論壇進一步討論。
