[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.mzph.cn/news/273835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 栈【测试题】

文章目录1.删除最外层的括号信息要求答案2.棒球比赛信息示例答案3. 用栈实现队列要求说明:答案4.用队列模拟栈描述注意答案5.下一个更大的元素(未解)信息:示例:注意:答案:6.删除字符串中的所有相邻重复项信息示例&…

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)方法,…

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"…

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;将会出…

进程状态转换(了解)

进程三个基本状态&#xff1a;就绪、阻塞、运行 这个比较简单&#xff0c;进程创建后进入就绪状态、然后若CPU空闲或能打断CPU正在执行的进程&#xff08;优先级低的&#xff09;&#xff0c;那么就绪状态转换成运行态&#xff0c;运行时&#xff0c;进程需要用到其他资源&…

2014阿里巴巴校园招聘笔试题 - 中南站

转载于:https://www.cnblogs.com/gotodsp/articles/3530329.html

Spring的IOC原理[通俗解释一下]

1. IoC理论的背景 我们都知道&#xff0c;在采用面向对象方法设计的软件系统中&#xff0c;它的底层实现都是由N个对象组成的&#xff0c;所有的对象通过彼此的合作&#xff0c;最终实现系统的业务逻辑。 图1&#xff1a;软件系统中耦合的对象 如果我们打开机械式手表的后盖&am…

以嵌入式系统设计师考试成绩,开始嵌入式博客之旅

http://www.rkb.gov.cn/jsj/cms/s_contents/download/s_dt201003110106.html 转载于:https://www.cnblogs.com/yueqian-scut/p/3952268.html

SSH框架配置及Maven使用

1.SSH框架配置 1.1. SSH框架介绍 1.2. SSH框架配置 所需资源下载&#xff1a; l jdk; 从Oracle官方网站&#xff1a;http://www.oracle.com/technetwork/cn/java/javase/downloads/index.html下载jdk&#xff0c;win7是默认安装在C:\Program Files (x86)\Java\jdk1.6.0_25路径下…

Flask 从入门到熟悉(不敢称为精通)

文章目录2.1 Flask介绍及其安装2.2 Virtualenv3.1 一个最小的应用3.2 外部课件服务器3.3 调试模式4.1 路由介绍4.2 变量规则4.3 构建URL4.4 HTTP 方法4 总结5.1 静态文件5.2 渲染模板5.3 练习66.1 接收请求数据6.2 请求对象6.3 文件上传6.4 Cookies6 总结77.1 重定向和错误7.2 …

Ext JS 5 beta版发布

原文&#xff1a;Announcing Public Beta of Ext JS 5我们非常高兴的宣布&#xff0c;Sencha Ext JS 5 beta版本开始进行公测了。这个beta版本可以让你、我们Sencha社区来对我们的Ext JS 5的工作进度进行评测。对于所以Ext JS开发人员&#xff0c;这事一个很好的机会来协助完成…

关于癌症的十大谣言

最近&#xff0c;国外网站总结了西方社会中流行的十个关于癌症的谣言&#xff0c;其中很多谣言在我们周围也有广泛的传播。 谣言1&#xff1a;癌症是人为导致的现代疾病 或许在公众的认知里&#xff0c;癌症在今天要比历史上任何时期都重要。不过实际上&#xff0c;癌症可不是一…

[python 进阶] 第7章 函数装饰器和闭包

文章目录7.1 装饰器基础知识7.2 Python何时执行装饰器7.3 使用装饰器改进“策略”7.4 变量作用域(global)备注 -比较字节码&#xff08;暂略&#xff09;7.5 闭包7.6 nonlocal声明global和nonlocal的区别7.7 实现一个简单的装饰器7.8 标准库中的装饰器7.8.1 使用functools.lru_…

自制“低奢内”CSS3登入表单,包含JS验证,请别嫌弃哦。

要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识。和JS/JQuery基本语法。 开发环境 Adobe Dreamweaver CS6 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到演示地址哦): 制作步骤: 一, html结构 <div id"home"><form id"login" class…

class里面只能写以下5种

转载于:https://www.cnblogs.com/phplearnings/p/3650849.html

【排序】算法(python实现)

文章目录python 排序算法1 插入排序1.1 直接插入排序算法思想1.2 希尔排序算法思想2. 选择排序2.1 简单选择排序2.2 堆排序参考python 排序算法 1 插入排序 1.1 直接插入排序 算法思想 直接插入排序的核心思想就是&#xff1a;将数组中的所有元素依次跟前面已经排好的元素相…