特別說明:原創教程,未經許可禁止轉載,教程采用回復可見的形式,謝謝大家的支持。
armfly-x2,x3,v2,v3,v5開發板裸機和帶系統的emWin工程已經全部建立,鏈接如下:
http://bbs.armfly.com/read.php?tid=1830
SEGGER公司介紹
了解emWin之前,先了解一下SEGGER這家公司,了解生產商才能對emWin有更加全面的認識。
SEGGER公司成立於1997年,到現在的2013年,有差不多16年的歷史了,這家公司主要有兩個
office,一個是在德國的Hilden,另個在美國的 Massachusetts。官網還有一個他們工作地方的照片,
看着很不錯,我這里也把這個照片貼上
這家公司的產品主要有三個大的方向,下面分別的說一下:
RTOS和中間件
embOS (Real Time Operating System)
embOS/IP (TCP/IP Stack)
emWin (Graphic Software & GUI)
emFile (File System)
emUSB Device (USB Device Stack)
emUSB Host (USB Host Stack)
J-Link Debug Probes
J - Link PRO
J - Link ULTRA+
J - Link PLUS
J - Link
J - Trace Cortex-M3
J - Trace ARM
Production Programmers
Flasher ARM
Flasher RX
Flasher STM8
Flasher ST7
Flasher 5
Flasher 5 PRO
官網上面也有一個論壇,不過論壇的打開速度比較的慢,而且是英文的,問個問題也不太方便
http://forum.segger.com/ 有興趣的可以去看看。
想了解價格和授權的可以看看這里http://www.segger.com/pricing.html,現在了解的NXP, ST,
Energy Micro獲得了SEGGER的授權,可以免費的使用,想了解其他信息的可以去官網查看,這里有
幾個官網張貼的,客戶設計界面,設計的的確很好看。
其實話說回來,要想設計比較好的界面還是得手工設計,用控件很難做出這種效果,除非有這種效果的控件。
本部分設定了隱藏,您已回復過了,以下是隱藏的內容
emWin5.xx的簡介
1. 目標系統(硬件)
目標系統必須具有:
• 一個CPU(8/16/32/64位)
• 一個具有最小內存的RAM和ROM
• 一個完整圖形顯示器 (任何類型和任何分辨率)
存儲器要求取決於使用的是軟件的哪部分以及目標編譯器的效率。因此不可能指定精確的值,但是以
下值適用於典型的系統。
小系統 (無窗口管理器)
•RAM:100字節
• 堆棧:600字節
•ROM:10-25 kb(取決於所使用的功能)
大系統 (包含窗口管理器和小工具)
•RAM:2-6 kb(取決於所需的窗口數)
• 堆棧:1200-1800字節 (取決於所使用的功能)
•ROM:30-60 kb(取決於所使用的功能)
請注意,如果應用程序使用了很多字體,則對ROM的要求會提高。上述所有值都是粗略估算值,不
保證能正常使用。
2. 特性
emWin設計用於提供高效且獨立於處理器和顯示控制器的圖形用戶界面,用於任何使用圖形顯示進行操作的應用。它與
單任務和多任務環境、專用操作系統或具有任何商業RTOS兼容,emWin的發貨形式為C語言源代碼。它可適用於任何尺
寸的、具有任何顯示控制器和CPU的物理和虛擬顯示器。其特性包括:
一般特性
• 支持使用任何控制器的任何 (單色、灰度或彩色)顯示器 (如果有正確的驅動)。
• 在較小顯示器上無顯示控制器也可運行。
• 使用配置宏可支持任何接口。
• 顯示尺寸可配置。
• 可在顯示器上的任何點 (而不僅僅是在偶數位字節地址)上寫入字符和位圖。
• 已針對尺寸和速度優化了各種例程。
• 利用編譯時間切換可進行不同優化。
• 對於較慢的顯示控制器,可在存儲器中緩存顯示,將存取操作減到最少,從而獲得非常高的速度。
• 結構清晰。
• 支持虛擬顯示;虛擬顯示可大於實際顯示。
圖形庫
• 支持不同色深的位圖。
• 可使用位圖轉換器。
• 絕對無浮點使用。
• 快速線/點繪制 (不使用浮點)。
• 圓形/多邊形繪制非常快速。
• 不同的繪圖模式。
字體
• 基本軟件配備多種不同的字體:4*6、6*8、6*9、8*8、8*9、8*16、8*17、8*18、24*32
以及像素高度為8、10、13、16的比例字體。有關詳細信息,請參閱字體一章。
• 可以定義新的字體並只需簡單鏈接。
• 只有應用程序使用的字體才實際鏈接到生成的可執行程序,從而使ROM使用最小。
• 字體可分別在X和Y方向完全縮放。
• 可使用字體轉換器;主機系統 (即Microsoft Windows)上有的任何字體都可以轉換。
字符串/值輸出例程
• 例程可以十進制、二進制、十六進制、任何字體形式顯示值。
• 例程可以十進制、二進制、十六進制、任何字體形式編輯值。
窗口管理器(WM)
• 完整的窗口管理操作,包括裁剪。窗口的客戶區以外的區域不可能被覆蓋。
• 窗口可以移動和調整大小。
• 支持回調例程 (可選擇是否使用)。
• WM使用最小的RAM(每個窗口大約50字節)。
PC界面外觀的可選小工具• 提供各種小工具 (窗口對象,也稱為控件)。它們通常自動操作並且簡單易用。
支持觸摸屏和鼠標• 對於按鈕小工具等窗口對象,emWin提供觸摸屏和鼠標支持。
PC工具
• 模擬脈沖查看器。
• 位圖轉換器。
• 字體轉換器。
3. RTOS對emWin的支持
官方的GUI_X文件里面有各種RTOS對emWin多任務的支持,沒有的話,移植一個也非常的方便,里面沒有
UCOS - III和FreeRTOS的移植,后面現成的添加進去就可以的。
emWin的簡單介紹先說這么多,后面開始講詳細的入門。
4. 基本的內存需求
Example | Hello world | Window application | |
ROM | GUI core | 5.9 kB | 43 kB |
Fonts | 1.8 kB | 12.5 kB | |
Application | 38 B | 2.7 kB | |
Startup code | 300 B | 300 B | |
Library | 0.1 kB | 1.5 kB | |
Total | 8.1 kB | 60 kB | |
RAM | GUI core | 62 B | 5.2 kB |
Application | - | 40 B | |
Stack | 272 B | 1.4 kB | |
Total | 334 B | 6.6 kB |
5. 控件預覽
Name | Screenshot (classic) | Screenshot (skinned) | Description |
button | ![]() |
![]() |
button which can be pressed. text or bitmaps may be displayed on a button. |
checkbox | ![]() |
![]() |
check box which may be checked or unchecked. |
dropdown | ![]() |
![]() |
dropdown listbox, opens a listbox when pressed. |
edit | ![]() |
![]() |
single-line edit field which prompts the user to type a number or text. |
framewin | ![]() |
![]() |
frame window. creates the typical gui look. |
graph | ![]() |
graph widget, used to show curves or measured values. | |
header | ![]() |
header control, used to manage columns. | |
iconview | ![]() |
icon view widget. useful for icon based plat- forms as found in common hand held devices. | |
image | ![]() |
image widget. displays several image formats automatically. | |
listbox | ![]() |
listbox which highlights items as they are selected by the user. | |
listview | ![]() |
listview widgets are used to creates tables. | |
listwheel | ![]() |
listwheel widget. the data can be moved and accelerated via pointer input device. | |
menu | ![]() |
menu widgets are used to create horizontal and vertical menus. | |
multiedit | ![]() |
multiedit widgets are used to edit multiple lines of text. | |
multipage | ![]() |
multipage widgets are used to create dialogs with multiple pages. | |
progbar | ![]() |
![]() |
progress bar used for visualization. |
radio | ![]() |
![]() |
radio button which may be selected. only one button may be selected at a time. |
scrollbar | ![]() |
![]() |
scrollbar which may be horizontal or vertical. |
slider | ![]() |
![]() |
slider bar used for changing values. |
spinbox | ![]() |
![]() |
spinning box to display and adjust a specific value. |
text | [img]http://micrium.com/wp-content/uploads/2012/07/text_classic.png[/img] | static text controls typically used in dialogs. | |
treeview | [img]http://micrium.com/wp-content/uploads/2012/07/treeview_classic.png[/img] | treeview widget for managing hierarchical lists. |