转自: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介绍的更多相关文章

  1. [STemWin教程入门篇]第二期:emWin5.xx的详细移植步骤

    转自:http://bbs.armfly.com/read.php?tid=1545 重要说明:(0)由于这个移植教程是去年过年的时候做的,用的是5.16,这就不再做个5.20的移植了,方法是一样的. ...

  2. OpenCV学习教程入门篇<一、介绍>

    OpenCV,是Inter公司开发的免费开源专门因为图像处理和机器视觉的C/C++库,英文全称是Open Source Computer Vision. 1. 可视化语言Matlab与OpenCV都能 ...

  3. CE修改器使用教程 [入门篇]

    Cheat Engine 一般简称CE,是一个开放源代码的作弊软件,其功能包括:内存扫描.十六进制编辑器.调试工具,Cheat Engine 自身附带了外挂制作工具,可以用它直接生成外挂工具,CE可以 ...

  4. JqueryEasyUI教程入门篇

    什么是jQueryEasyUI? JqueryUI是一组基于jQuery的UI插件集合 学习jQueryEasyUI的条件? 必须掌握Jquery的基本语法知识 jQueryEasyUI的特点? 1. ...

  5. Thymeleaf教程入门到深入1:基础介绍

    1 介绍 1.1 简介 Thymeleaf是一个用于Web和独立Java环境的模板引擎,能够处理HTML.XML.JavaScript.CSS甚至纯文本.能轻易的与Spring MVC等Web框架进行 ...

  6. Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest?

    原始链接:Introduction: Why Google C++ Testing Framework? 词汇表 版本号:v_0.1 介绍:为什么使用GTest? GTest帮助你写更好的C++测试代 ...

  7. [转]JqueryEasyUI教程入门篇

    什么是jQueryEasyUI? JqueryUI是一组基于jQuery的UI插件集合 学习jQueryEasyUI的条件? 必须掌握Jquery的基本语法知识 jQueryEasyUI的特点? 1. ...

  8. shell教程<入门篇>

    由于我平时的工作环境是linux,所以无可避免的经常使用命令行模式和shell脚本,而且有些命令行每天都要输好多遍,比如ssh登录之类的,所以干脆把平时常用的命令都写成脚本文件,所以特意开了一个she ...

  9. 转:jQuery LigerUI 使用教程表格篇(3) 复选框、多表头、分组、汇总和明细

    阅读目录 复选框 多表头 分组 汇总 明细 复选框 grid可以设置复选框模式进行多选,只需要简单的配置 checked:true 获取选中行 如果要获取选中的行,可以用getSelecteds方法: ...

随机推荐

  1. servlet3.0 异步处理

    转:https://blog.csdn.net/benjamin_whx/article/details/38874657 13.1.概述 计算机的内存是有限的.Servlet/JSP容器的设计者很清 ...

  2. Modular arithmetic and Montgomery form 实现快速模乘

    题目: 电音之王 题解: 求数列前n项相乘并取模 思路: ①.这题的乘法是爆long long的,可以通过快速幂的思想去解决(按数位对其中的一个数进行剖分).当然你的乘法会多出一个log的复杂度... ...

  3. PHP 常用自定义函数

    模拟 POST.GET 请求 /** * 模拟post进行url请求 * @param string $url * @param string $param */ protected function ...

  4. SercletConfig 详解

    ServletConfig:从一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对本servlet有效,一个servlet的ServletConfig对象不能被另一个servlet访问 ...

  5. upc组队赛14 Bus stop【签到水】

    Bus Stop 题目描述 In a rural village in Thailand, there is a long, straight, road with houses scattered ...

  6. Ubuntu解压缩rar格式文件

    解压缩rar文件时,出现问题 解决方法: sudo apt-get install unrar

  7. Oracle学习笔记<5>

    组函数(多值函数) 数据库中函数的分类:1)单值函数 Single Rows Functions 特点:n条数据参与函数处理,最终得到n条结果.2)多值函数(组函数) Multiple Rows Fu ...

  8. DNS解析全过程详解

    1.Chrome浏览器 会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有www.linux178.com 对应的条目,而且没有过期,如 ...

  9. Guava 开源工具的简单介绍

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libra ...

  10. c#各类DI容器

    IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理. DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现. ...