[STemWin教程入門篇]第一期:emWin介紹

特別說明:原創教程,未經許可禁止轉載,教程采用回復可見的形式,謝謝大家的支持。

??????????????????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.??基本的內存需求

?

?ExampleHello worldWindow application
ROMGUI core5.9 kB43 kB
?Fonts1.8 kB12.5 kB
?Application38 B2.7 kB
?Startup code300 B300 B
?Library0.1 kB1.5 kB
?Total8.1 kB60 kB
RAMGUI core62 B5.2 kB
?Application-40 B
?Stack272 B1.4 kB
?Total334 B6.6 kB

?

5.??控件預覽

?

NameScreenshot (classic)Screenshot (skinned)Description
buttonbutton which can be pressed. text or bitmaps may be displayed on a button.
checkboxcheck box which may be checked or unchecked.
dropdowndropdown listbox, opens a listbox when pressed.
editsingle-line edit field which prompts the user to type a number or text.
framewinframe 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.
progbarprogress bar used for visualization.
radioradio button which may be selected. only one button may be selected at a time.
scrollbarscrollbar which may be horizontal or vertical.
sliderslider bar used for changing values.
spinboxspinning 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.

?

轉載于:https://www.cnblogs.com/flyheart33/p/3589684.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273835.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273835.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273835.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 棧【測試題】

文章目錄1.刪除最外層的括號信息要求答案2.棒球比賽信息示例答案3. 用棧實現隊列要求說明:答案4.用隊列模擬棧描述注意答案5.下一個更大的元素(未解)信息:示例:注意:答案:6.刪除字符串中的所有相鄰重復項信息示例&…

python從socket做個websocket的聊天室server

下面的是server端:把IP改成自己的局域網IP: #coding:utf8 import socket,select import SocketServer import hashlib,base64,time from pprint import pprint#author:lijim def f(key):skey"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"sha1hashli…

python進階(第三章1) 字典

文章目錄3.1 泛映射類型什么是可散列的數據類型(鍵的要求)字典的構造方法3.2 字典推導(dictcomp)3.3 常見的映射方法用setdefault處理找不到的鍵3.4 映射的彈性鍵查詢3.4.1 defaultdict:處理找不到的鍵的一個選擇注意:defaultdict與dict實例化…

python基礎 list和tuple

文章目錄一、list1、len()函數可以獲得list元素的個數2、索引從0開始3、末尾追加 append(xx)4、也可以把元素插入到指定的位置,比如索引號為1的位置(insert)5、末尾刪除pop() ,并且返回該值6、要刪除指定位置的元素,用pop(i)方法,…

HDU 2818 Building Block

題目連接 http://acm.hdu.edu.cn/showproblem.php?pid2818 題意:給定N個blocks,分在N個堆里,然后又P個操作,每次將x所在的堆放在y所在的堆上,或者詢問x的下面有幾個blocks 做法:帶權并查集 因為要查詢x的下面有多少bl…

百度社會化分享組件使用問題

今天下午玩了玩百度的社會化分享sdk,我是在這下載的sdk http://developer.baidu.com/frontia/sdk 誰知道這個下載鏈接是沒更新的,還是1.0版本的,是尼瑪13年初的版本 搗鼓了半天各種bug 然后去百度官網重新找http://developer.baidu.com/wiki/index.php?titledocs/frontia/res…

python基礎 dict和set

文章目錄dictset4.用集合為列表去重5.集合的增 add,update6.集合的刪 discard,remove,pop,clear7 集合運算7.1 子集(<或者issubset()方法)7.2并集(|或者union()方法)7.3 交集(&或者intersection())7.4 差集(-或者difference()方法)7.5 對稱集(^或者symmetric_difference…

python進階(第三章2)字典和集合

文章目錄3.8 集合論nee中的元素在haystack中出現的次數&#xff0c;可以在任何可迭代對象上3.8.1集合字面量3.8.2 集合推導3.8.3 集合操作3.9 dict和set的背后3.9.1 一個關于效率的實驗3.9.2 字典中的散列表1.散列值和相等性2.散列表算法獲取值&#xff1a;添加新的元素更新現有…

Android下實現GPS定位服務

1.申請Google API Key&#xff0c;參考前面文章 2.實現GPS的功能需要使用模擬器進行經緯度的模擬設置&#xff0c;請參考前一篇文章進行設置 3.創建一個Build Target為Google APIs的項目 4.修改Androidmanifest文件&#xff1a; view plain<uses-library android:name"…

python 鏈表 【測試題】

文章目錄注意&#xff1a;實例講解1 .鏈表基本功能2. 根據值刪除鏈表中的節點信息答案&#xff1a;3.反轉一個單鏈表信息答案4.合并兩個有序鏈表信息答案5.刪除排序鏈表中的重復元素信息答案6.移除鏈表元素信息7.環形鏈表信息進階思路答案注意&#xff1a; 這里的head是只存儲…

WebService應用一例,帶有安全驗證

1、創建WEB項目&#xff0c;添加WEB服務WebService1.asmx&#xff0c;代碼如下&#xff1a; 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Web;5 using System.Web.Services;6 7 namespace WebService8 {9 /// <summary> …

linux集成開發環境

Linux操作系統的種種集成開發環境隨著Linux的逐漸興起&#xff0c;已經有為數眾多的程序在上面馳騁了&#xff0c;許多開發環境(Development Environment)也應運而生。好的開發環境一定是集成了編輯、編譯和調試等多項功能并且易于使用。本文介紹了一些在Linux上流行的開發環境…

mysql技術內幕《讀書筆記》

文章目錄1. mysql 體系結構和存儲引擎1.5 連接mysql1.5.11. mysql 體系結構和存儲引擎 1.5 連接mysql 連接mysql操作是一個連接進程和mysql數據庫實例進行通信。 本質是進程通信&#xff0c;常用的進程通信方式有管道&#xff0c;命名管道&#xff0c;命名字&#xff0c;TCP/…

DEDECMS全版本gotopage變量XSS ROOTKIT 0DAY

影響版本&#xff1a; DEDECMS全版本 漏洞描敘&#xff1a; DEDECMS后臺登陸模板中的gotopage變量未效驗傳入數據&#xff0c;導致XSS漏洞。 \dede\templets\login.htm 65行左右 <input type"hidden" name"gotopage" value"<?php if(!empty($g…

Android開源庫loopj的android-async-http的 JsonHttpResponseHandler 存在死循環GC_CONCURRENT

我現在用的是 AndroidAsyncHttp 1.4.4 版本&#xff0c;之前遇到一個很奇怪的問題&#xff0c; 當使用 JsonHttpResponseHandler 解析請求的頁面出現服務器錯誤或其他情況返回的內容不是 JSON 字符串時不會調用自己復寫實現的 onSuccess 或者 onFailure 方法&#xff0c;將會出…

python【進階】4.文本和字節序列

文章目錄1. 字符、碼位和字節表述4.1字符問題2. bytes、bytearray 和 memoryview 等二進制序列的獨特特性3. 全部 Unicode 和陳舊字符集的編解碼器4.避免和處理編碼錯誤5.處理文本文件的最佳實踐6.默認編碼的陷阱和標準 I/O 的問題7.規范化 Unicode 文本,進行安全的比較8.規范化…

C#序列化和反序列化

序列化和反序列化我們可能經常會聽到&#xff0c;其實通俗一點的解釋&#xff0c;序列化就是把一個對象保存到一個文件或數據庫字段中去&#xff0c;反序列化就是在適當的時候把這個文件再轉化成原來的對象使用。我想最主要的作用有&#xff1a; 1、在進程下次啟動時讀取上次保…

python【進階】5.一等函數(注銷)

在 Python 中,函數是一等對象。編程語言理論家把“一等對象”定義為滿足下述條件的程 序實體: 在運行時創建能賦值給變量或數據結構中的元素能作為參數傳給函數能作為函數的返回結果 在 Python 中,所有函數都是一等對象。 5.1 把函數視作對象 >>> def d(n): ... …

進程狀態轉換(了解)

進程三個基本狀態&#xff1a;就緒、阻塞、運行 這個比較簡單&#xff0c;進程創建后進入就緒狀態、然后若CPU空閑或能打斷CPU正在執行的進程&#xff08;優先級低的&#xff09;&#xff0c;那么就緒狀態轉換成運行態&#xff0c;運行時&#xff0c;進程需要用到其他資源&…

rebuild online意外終止導致ora-8104錯誤的實驗

rebuild online意外終止導致ora-8104錯誤的實驗 SQL> !oerr ora 810408104, 00000, "this index object %s is being online built or rebuilt"// *Cause: the index is being created or rebuild or waited for recovering // from the online (re)build // *Act…