特别说明:完整STemWin的1-60期教程和配套实例下载地址:链接
第1章
本期教程开始带领大家了解一下STemWin的基本知识,其实确切的讲应该叫emWin基础知识,由于教程使用的开发板是ST的微控制器,所以就把名字统一命名成STemWin(为什么叫STemWin,在下面会有详细的讲解)。 1.1 STemWin,emWin,μCGUI之间的关系 1.2 SEGGER公司介绍 1.3 STemWin介绍 1.4 STM32F103和407跑STemWin性能测试 1.5 STemWin论坛 1.6 总结
1.1
这个放在最开头进行说明,因为很多的初学者比较的迷惑。 对于一些刚学GUI的用户来说,知道μCGUI的比较多,而不知道所谓的emWin或者STemWin。这个并不奇怪,主要是因为大部分人只知道SEGGER公司的做的JLINK,而不知道他们还有RTOS和相关的中间件(中间件的意思就是基于RTOS的文件系统,GUI,USB主机和设备协议栈等)。 1.1.1
μCGUI在国内前几年比较火的原因有三点:
l
l
l 1.1.2
首先要明白,这两个GUI是一个东西。最初这个GUI就是SEGGER公司的,然后以什么的方式授权给μCGUI就不清楚了。现在SEGGER公司是这个GUI的主要推动者,已经将其授权给了多个芯片生产厂家。 1.1.3
STemWin是SEGGER公司授权给ST(意法半导体)的。使用ST芯片的用户可以免费使用STemWin。其实不光授权给了ST,还有NXP,Energy Micro等。凡是使用这些芯片厂商生产的处理器都可以免费的使用emWin。但是出于一定的保护措施,使用STemWin的库是不能用在其它芯片厂商的处理器上面的。因为在工程初始化STemWin前要使能CRC校验。如果没有使能,STemWin是启动不起来的。KEIL MDK的安装目录里面也带有emWin软件包,这个软件包也不是可以直接使用的,用户需要给KEIL MDK注册RL-ARM才可以使用。 这里STemWin还针对ST的微控制器做了专门的优化,比如在使用ST的F4XX微控制器带FPU的芯片时,STemWin在需要浮点处理的地方专门做了优化。 1.1.4
emWin发展到5.0版本以后已经产生了很大的更新,特别是底层驱动方面。emWin5.xx版本向下完全的兼容低版本,当然包括μCGUI5.xx以下的版本,也就说如果用户有在μCGUI5.xx以下版本建立的工程,完全可以用在高版本上面(条件是没有修改过源码)。这里不建议初学者修改源代码,修改过后会破坏现有的机制。在以后的使用中会养成不好的习惯,只要某些功能无法实现就去修改源码,随着修改的增多会严重的破坏现有的机制。 emWin5.xx以后的版本只有库,没有源码。对于一些想研究源码的,可以看早期的版本,了解一下通讯机制。不过对于大多数从应用角度出发的,完全没有必要学习源码,源码内容太多。对于一些无法实现的功能,在emWin5.xx上面得到了很大的改善,基本不需要修改源码。如果通过各种方法实在无法实现,完全可以使用emWin支持的用户控件设计方法做一个符合要求的。
1.2
SEGGER公司应该算是一家老牌的调试工具以及RTOS及中间件的生产商。SEGGER公司成立于1997年,到现在的2014年,有差不多17年的历史了,这家公司主要有两个office,一个是在德国的Hilden,另个在美国的
SEGGER公司的产品主要有三个方向,分别如下: 1.2.1
SEGGER公司的RTOS是embOS,在国内知道的人可能比较少。SEGGER做的embOS和中间件都是以库的形式供用户下载的,除非购买了使用权。产品主要如下:
l
l
l
l
l
l
l emModbus是今年(2014年)刚刚发布的。 1.2.2
J-Link应该大家都不陌生,它是有SEGGER公司设计的。具体的J-Link产品有好几款,具体如下:
l
l
l
l
l
l 1.2.3
这个工具在国内用的比较少,主要如下几款产品:
l
l
l
l
l
l
上面说的这三项应该算是SEGGER公司的主营产品,更详细的可以上面他们的官网www. 进行了解。
1.3 emWin5.xx版本设计出来的界面还是非常漂亮的,先贴几个相关的设计图片,让大家有一些感官的认识。 1.3.1
l 整体来说,这些图片还是非常漂亮的,不过这些界面不是用专门的控件显示出来的,使用的2D绘图配合内存设备管理实现的。
l 总的来说这些界面还是非常漂亮的,关于STM32-V5开发板更详细的资料可以看如下两个地址:
1.3.2
目标系统必须具有:
l
l
l
小系统 (无窗口管理器)
l
l
l 大系统 (包含窗口管理器和小工具)
l
l
l
1.3.3
emWin设计用于提供高效且独立于处理器和显示控制器的图形用户界面,用于任何使用图形显示进行操作的应用。它与单任务和多任务环境、专用操作系统或具有任何商业RTOS兼容,emWin的发货形式为C语言源代码。它可适用于任何尺寸的、具有任何显示控制器和CPU的物理和虚拟显示器。其特性包括: 一般特性
l
l
l
l
l
l
l
l
l
l 图形库
l
l
l
l
l
l 字体
l
l
l
l
l 字符串/值输出例程
l
l 窗口管理器(WM)
l
l
l
l PC界面外观的可选小工具
l 支持触摸屏和鼠标
l PC工具
l
l
l 1.3.4
基本常见的RTOS都支持STemWin的多任务,移植起来也比较的简单,下面这些是官方提供好的移植。 1.3.5
这个只是官方提供的基本数据,仅供大家参考。具体还要看实际应用。 1.3.6
由于emWin在不断的更新当中,这里是当前支持的大部分控件,但不是全部。
1.4
以前论坛上以及群里面的一些客户对STM32F103和407跑STemWin持怀疑态度,觉得跑不起来,或者说实时性不行,刷屏比较慢,这里我专门的做了一些测试。 1.4.1
l 优化底层的情况下,刷整个屏 没有优化底层的情况下,刷整个屏
l 优化底层的情况下,刷整个屏 没有优化底层的情况下,刷这个屏
1.4.2
l
l 现在用3.0的屏刷控件,优化底层的情况下,刷整个控件
通过上面的比较,大家有没有看到差距,是否还对用F1,F4跑emWin界面存在疑虑?对于刷图片,本身STM32F1,STM32F4刷图片的效果就比较差,这里就不做测试了。通过这个测试也说明了很重要的一点,那就是优化底层驱动的重要性。
1.5 自从国内的uCGUI论坛关闭以后,这方面比较好的论坛就很少了,论坛对于STemWin的发展也很重要。针对STemWin,我们自己建立的论坛:http://bbs./thread.php?fid=12。有兴趣的可以在论坛跟大家探讨相关的应用。 SEGGER官方也有自己的emWin论坛,地址是:http://forum./。
1.6 关于STemWin的介绍就跟大家说这么多,更详细的可以上我们的论坛进一步讨论。还有一点要说明的就是SEGGER公司的所有软件都是收费的,收费标准看这里:http://www./pricing.html。 |
|