转自: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. Dealing with exceptions thrown in Application_Start()

    https://blog.richardszalay.com/2007/03/08/dealing-with-exceptions-thrown-in-application_start/ One a ...

  2. net core配置log4net需要注意的地方

    和netframework不一样的是,netcore 没有assembly文件.所以配置的时候需要注意: 1.配置文件可以没有 <configSections> <section n ...

  3. 不同字符串,HashCode可能相同

    不同的字符串,hashcode可能相同. 先看例子: @Test public void test6(){ System.out.println("ABCDEa123abc".ha ...

  4. python学习笔记:try与except处理异常语句

    写代码的时候会遇到各种各样的异常,那么代码就不会继续往下走了.比如说10除以0是错误的,因为除数不能为零学会捕捉异常,在异常出现的时候我们要做什么操作. 本文中只做简单使用的讲解,详细使用方法可以参考 ...

  5. tensorflow队列tf.FIFOQueue | enqueue | enqueue_many | dequeue | dequeue_many

    关于队列的相关知识,盗用一张https://blog.csdn.net/HowardWood/article/details/79406891的动态图 import tensorflow as tf ...

  6. 数据库(四)—— Redis数据库

    目录 redis 一.redis的安装部署 二.redis配置文件 1.基本配置 2.安全配置 3.查看配置信息 三.redis持久化 1.持久化类型 2.RDB持久化 3.AOF持久化(append ...

  7. VC++实现窗口置顶

    最近在跟着Visual C++网络编程开发与实战视频教程做HttpSourceViewer这个MFC项目时,可以看我Github上的项目HttpSourceViewer,目前基本实现了所有功能,就是关 ...

  8. Ubuntu安装程序提示无法获得锁

    目录 1.问题描述 2.问题原因 3.解决方案 3.1方法一:杀掉apt-get进程 3.2方法二:强制解锁 1.问题描述 E: 无法获得锁 /var/lib/dpkg/lock-frontend - ...

  9. 多线性方程组迭代算法——Gauss-Seidel迭代算法的Python实现

    多线性方程组(张量)迭代算法的原理请看这里:原理部分请留言,不方便公开分享 Jacobi迭代算法里有详细注释:多线性方程组迭代算法——Jacobi迭代算法的Python实现 import numpy ...

  10. Neo4j百万级数据导入只需30s

    先上图:425万nodes.180万relationships只用了30s 243ms 项目需要生成关系图,开始考虑的是用Neo4j官网提供的REST API,从solr中查出2组数据先创建节点再创建 ...