教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429
第3章 emWin介绍
本章主要介绍emWin的基础知识。
3.1 STemWin,emWin,μCGUI之间的关系
3.2 emWin介绍
3.3 emWin论坛
3.4 总结
3.1 STemWin,emWin,μCGUI之间的关系
这个放在最开头进行说明,因为很多的初学者比较迷惑。
3.1.1 emWin和μCGUI的关系
首先要明白,emWin和μCGUI这两个GUI是同一个东西。最初这个GUI就是SEGGER公司的,然后以什么的方式授权给μCGUI就不清楚了。现在SEGGER公司是这个GUI的主要推动者,已经将其授权给了多个芯片生产厂家。
3.1.2 STemWin和emWin的关系
STemWin是SEGGER公司授权给ST(意法半导体)的。使用ST芯片的用户可以免费使用STemWin。其实不光授权给了ST,还有NXP,Energy Micro等。凡是使用这些芯片厂商生产的处理器都可以免费的使用emWin。但是出于一定的保护措施,使用STemWin的库是不能用在其它芯片厂商的处理器上面的。因为在工程初始化STemWin前要使能CRC校验。如果没有使能,STemWin是启动不起来的。
这里STemWin还针对ST的微控制器做了专门的优化,比如在使用ST的F4xx/H7xx微控制器带FPU的芯片时,STemWin在需要浮点处理的地方专门做了优化。
3.1.3 emWin6.xx版本和以前版本的不同
emWin发展到6.0版本以后进行了很大的更新,特别是性能更强的图形化创建工具AppWizard。emWin6.xx版本向下完全的兼容低版本,也就是说如果用户有在emWin6.xx以下版本建立的应用,完全可以在高版本上面实现。
emWin6.xx没有源码。想研究源码的,可以看早期的版本,了解一下消息机制。不过对于大多数从应用角度出发的用户,完全没有必要学习源码,源码内容太多。一些早期版本无法实现的功能,在emWin6.xx上面得到了很大的改善,支持的控件更多了。如果通过各种方法仍然无法实现,可以使用emWin支持的自定义控件,自定义回调函数或者控件皮肤设置做一个符合要求的。
3.2 emWin介绍
emWin6.xx版本设计出来的界面还是非常漂亮的。为了使大家有一些感官的认识,先来欣赏几张相关的界面设计图片。
3.2.1 emWin设计界面
下面是官方提供的应用界面设计效果:
整体来说,这些界面还是非常漂亮的,不过这些界面不是用专门的控件显示出来的,而是用2D绘图配合存储设备实现的。
- 下面是在开发板上实现的界面效果
更多界面效果看此地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=17330
主界面:
音乐播放器界面:
视频播放界面:
收音机界面:
示波器界面效果:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=45785
3.2.2 emWin目标系统硬件需求
实现emWin的最基本硬件需求如下:
- 一个MCU或者MPU(8/16/32/64位)且RAM和Flash大小要满足emWin最小需求。
- 一个图形显示器 (任何类型和任何分辨率)。
Flash和RAM的使用大小取决于用户所使用的STemWin的功能以及编译器的效率。因此不可能指定精确的值,但是以下值适用于典型的系统。
未使用窗口管理器时
- RAM:100字节
- 堆栈:600字节
- Flash:10-25 kb(取决于所使用的功能)
使用窗口管理器和控件时
- RAM:2-6 kb(取决于所需的窗口数)
- 堆栈:1200-1800字节 (取决于所使用的功能)
- Flash:30-60 kb(取决于所使用的功能)
请注意,如果应用程序使用了很多字体,则对ROM的要求会提高。上述所有值都是粗略估算值,不保证能正常使用。
3.2.3 emWin特性
emWin提供了高效且独立于处理器和显示控制器的图形用户界面,可用于任何使用图形显示进行操作的应用。它与单任务和多任务环境、专用操作系统或任何商业RTOS均兼容,emWin的发布形式为C语言源代码。它可适用于任何尺寸的、具有任何显示控制器,不管是物理的还是虚拟的显示器。其特性包括:
【一般特性】
- 支持使用任何控制器的任何(单色、灰度或彩色)显示器 (如果有正确的驱动)。
- 在较小的显示器上无显示控制器也可运行。
- 使用配置宏可支持任何接口。
- 显示尺寸可配置。
- 可在显示器上的任何点(而不仅仅是在偶数位字节地址)上写入字符和位图。
- 已经针对尺寸和速度对程序进行了优化。
- 对于较慢的显示控制器,可在存储器中缓存显示,将存取操作减到最少,从而获得非常高的速度。
- 结构清晰。
- 支持虚拟显示,虚拟显示可大于实际显示。
【图形库】
- 支持不同颜色深度的位图。
- 可使用位图转换器。
- 绝对无浮点使用。
- 快速线/点绘制 (不使用浮点)。
- 圆形/多边形绘制非常快速。
- 不同的绘图模式。
【字体】
- 基本软件配备多种不同的字体:4*6、6*8、6*9、8*8、8*9、8*16、8*17、8*18、24*32以及像素高度为8、10、13、16的比例字体。
- 可以定义新的字体。
- 只有应用程序使用的字体才链接到可执行程序里,从而使Flash使用最小。
- 字体可在X和Y方向完全缩放。
- 可使用字体转换器,主机系统 (即Microsoft Windows)上有的任何字体都可以转换。
【字符串/值输出函数】
- 函数可以十进制、二进制、十六进制、任何字体形式显示值。
- 函数可以十进制、二进制、十六进制、任何字体形式编辑值。
【窗口管理器(WM)】
- 完整的窗口管理操作,包括裁剪。窗口的客户区以外的区域不可能被覆盖。
- 窗口可以移动和调整大小。
- 支持回调函数(可选择是否使用)。
- 窗口管理器使用最小的RAM(每个窗口大约50字节)。
【PC界面外观的可选控件】
- 提供各种控件,它们通常自动操作并且简单易用。
【支持触摸屏和鼠标】
- 对于控件,emWin提供触摸屏和鼠标支持。
【PC工具】
- 模拟查看器。
- 位图转换器。
- 字体转换器。
3.2.4 RTOS对emWin多任务的支持
基本常见的RTOS都支持emWin的多任务,移植起来也比较简单,下面这些是官方提供好的移植。
这些移植好的接口文件在MDK的安装目录里面,以MDK5.34版本为例,所在的路径为:
KeilMDK-Middleware7.12.0emWinSampleGUI_X。
3.2.5 emWin基本的内存需要
这个只是官方提供的基本数据,仅供参考,具体还要看实际应用。
3.2.6 emWin当前支持的控件
由于emWin在不断的更新当中,这里是当前支持的大部分控件,但不是全部。
3.3 emWin论坛
我们有自己建立的论坛版块:
http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12 。
当然,SEGGER官方也有自己的emWin论坛,地址:http://forum.segger.com/。
3.4 总结
关于emWin的介绍就跟大家介绍这么多,更详细的可以上我们的论坛进一步讨论。