【第3版emWin教程】第3章 emWin介绍

教程不断更新中: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的介绍就跟大家介绍这么多,更详细的可以上我们的论坛进一步讨论。

微信公众号:armfly_com 安富莱论坛:www.armbbs.cn 安富莱淘宝:https://armfly.taobao.com
原文地址:https://www.cnblogs.com/armfly/p/14885848.html