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

2021-06-21 17:41:16 浏览数 (1)

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

0 人点赞