[STemWin教程入门篇] 第一期:emWin介绍
转自:http://bbs.armfly.com/read.php?tid=1544
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. |
[STemWin教程入门篇] 第一期:emWin介绍的更多相关文章
- [STemWin教程入门篇]第二期:emWin5.xx的详细移植步骤
转自:http://bbs.armfly.com/read.php?tid=1545 重要说明:(0)由于这个移植教程是去年过年的时候做的,用的是5.16,这就不再做个5.20的移植了,方法是一样的. ...
- OpenCV学习教程入门篇<一、介绍>
OpenCV,是Inter公司开发的免费开源专门因为图像处理和机器视觉的C/C++库,英文全称是Open Source Computer Vision. 1. 可视化语言Matlab与OpenCV都能 ...
- CE修改器使用教程 [入门篇]
Cheat Engine 一般简称CE,是一个开放源代码的作弊软件,其功能包括:内存扫描.十六进制编辑器.调试工具,Cheat Engine 自身附带了外挂制作工具,可以用它直接生成外挂工具,CE可以 ...
- JqueryEasyUI教程入门篇
什么是jQueryEasyUI? JqueryUI是一组基于jQuery的UI插件集合 学习jQueryEasyUI的条件? 必须掌握Jquery的基本语法知识 jQueryEasyUI的特点? 1. ...
- Thymeleaf教程入门到深入1:基础介绍
1 介绍 1.1 简介 Thymeleaf是一个用于Web和独立Java环境的模板引擎,能够处理HTML.XML.JavaScript.CSS甚至纯文本.能轻易的与Spring MVC等Web框架进行 ...
- Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest?
原始链接:Introduction: Why Google C++ Testing Framework? 词汇表 版本号:v_0.1 介绍:为什么使用GTest? GTest帮助你写更好的C++测试代 ...
- [转]JqueryEasyUI教程入门篇
什么是jQueryEasyUI? JqueryUI是一组基于jQuery的UI插件集合 学习jQueryEasyUI的条件? 必须掌握Jquery的基本语法知识 jQueryEasyUI的特点? 1. ...
- shell教程<入门篇>
由于我平时的工作环境是linux,所以无可避免的经常使用命令行模式和shell脚本,而且有些命令行每天都要输好多遍,比如ssh登录之类的,所以干脆把平时常用的命令都写成脚本文件,所以特意开了一个she ...
- 转:jQuery LigerUI 使用教程表格篇(3) 复选框、多表头、分组、汇总和明细
阅读目录 复选框 多表头 分组 汇总 明细 复选框 grid可以设置复选框模式进行多选,只需要简单的配置 checked:true 获取选中行 如果要获取选中的行,可以用getSelecteds方法: ...
随机推荐
- Jenkins构建触发器的区别
Build periodically:定时进行项目构建或执行(它不care源码是否发生变化),配置如下: 0 2 * * * (每天2:00 必须build一次源码) 如果是要定时执行脚本,需要选择 ...
- Note1
1.关于数据库主从备份与读写分离 主服务器数据库的每次操作都会记录在二进制日志文件mysql-bin.xxx中.从服务器的I/O线程使用专用帐号登陆到主服务器中读取该二进制文件,并将文件内容写入到自己 ...
- python- ' % '运算符的用途(非常重要)
%运算符就是用来格式化字符串的. 在字符串内部, %s表示用字符串替换, %d表示用整数替换, 有几个%?占位符,后面就跟几个变量或者值,顺序要对应好. 如果只有一个%?,括号可以省略. 另一种格式化 ...
- 斯坦福【概率与统计】课程笔记(三):EDA | 直方图
单个定量变量的直方图表示 大家知道,定量变量是连续型变量,即不会像分类变量那样有明显的分类,那么如何将其画成直方图呢?一般来说,会将其按照某个维度来将其分组(group),举个例子. 我们有15个学生 ...
- C语言I博客作业008
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 http://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/9982 我在这个课程的目标是 ...
- apache 安装配置 (centos)
1. 使用yum包安装Apache软件 [root@Apache ~]# yum -y install httpd* [root@Apache ~]# rpm -qa | grep httpd --查 ...
- SpringMVC学习(9):实现注解式权限验证
对大部分系统来说都需要权限管理来决定不同用户可以看到哪些内容,那么如何在Spring MVC中实现权限验证呢?当然我们可以继续使用servlet中的过滤器Filter来实现.但借助于Spring MV ...
- jackson的readTree有坑
{"}] readTree认为上面的字符是json,坑啊 alibaba的fastjson 无论JSONObject.parseObject还是JSONObject.parseObject ...
- 【最新】 ELK之 logstash 同步数据库数据到Elasticsearch
cd /usr/local 下载logstash 6.4.3版本 wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3 ...
- 最新版WinRAR5.61去广告代码教程分享(仅供学习交流)
最新版WinRAR5.61去广告代码教程分享(仅供学习交流) 第一步:到WinRAR官网www.rarlab.com下载自己需要的版本,选择Chinese Simplified 64bit 安装即可. ...




























