你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【安富莱STemWin教程】第1章 STemWin介绍

[复制链接]
baiyongbin2009 发布时间:2015-1-6 16:13
本帖最后由 baiyongbin2009 于 2015-1-6 16:32 编辑 7 y3 [2 x" I# X+ v) k
; v$ p  E! h# I' J* N

特别说明:完整STemWin的1-60期教程和配套实例下载地址:链接

第1章  STemWin介绍

- x# Q2 i& z; \8 I: a) q) g* g" R& G
    本期教程开始带领大家了解一下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  STemWin,emWin,μCGUI之间的关系
    这个放在最开头进行说明,因为很多的初学者比较的迷惑。
    对于一些刚学GUI的用户来说,知道μCGUI的比较多,而不知道所谓的emWin或者STemWin。这个并不奇怪,主要是因为大部分人只知道SEGGER公司的做的JLINK,而不知道他们还有RTOS和相关的中间件(中间件的意思就是基于RTOS的文件系统,GUI,USB主机和设备协议栈等)。
1.1.1      μCGUI在国内比较火的原因
    μCGUI在国内前几年比较火的原因有三点:
l 一个是μCOS-II在国内的推广,自从Micrum公司出的那本《嵌入式实时操作系统μCOS-II》发布之后,国内关于μCOS-II的资料就是普天盖起,再加上各种培训机构和开发板的推广,μCOS-II就在国内火起来了。μCOS-II火的同时,它配套的中间件,特别是μCGUI就跟着在国内火了起来。
l 前几年国内有一个μCGUI的论坛,这个论坛在国内的μCGUI方面应该算是做得最好的,特别是那个站长在μCGUI方面的研究,这位站长对于μCGUI在国内的发展功不可没。
l 还有一个原因就是μCGUI是带有源码的,很多时候可以通过修改部分的源码实现一些特殊的功能,现在网上流传的μCGUI的源码已经不知道经过多少人的手被修改过,最原始的的代码已经在官网上面找不到了。
1.1.2      emWinμCGUI的关系
    首先要明白,这两个GUI是一个东西。最初这个GUI就是SEGGER公司的,然后以什么的方式授权给μCGUI就不清楚了。现在SEGGER公司是这个GUI的主要推动者,已经将其授权给了多个芯片生产厂家。
1.1.3      STemWin和emWin的关系
    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      emWin5.xx版本和以前版本的不同
    emWin发展到5.0版本以后已经产生了很大的更新,特别是底层驱动方面。emWin5.xx版本向下完全的兼容低版本,当然包括μCGUI5.xx以下的版本,也就说如果用户有在μCGUI5.xx以下版本建立的工程,完全可以用在高版本上面(条件是没有修改过源码)。这里不建议初学者修改源代码,修改过后会破坏现有的机制。在以后的使用中会养成不好的习惯,只要某些功能无法实现就去修改源码,随着修改的增多会严重的破坏现有的机制。
    emWin5.xx以后的版本只有库,没有源码。对于一些想研究源码的,可以看早期的版本,了解一下通讯机制。不过对于大多数从应用角度出发的,完全没有必要学习源码,源码内容太多。对于一些无法实现的功能,在emWin5.xx上面得到了很大的改善,基本不需要修改源码。如果通过各种方法实在无法实现,完全可以使用emWin支持的用户控件设计方法做一个符合要求的。
1.2  SEGGER公司介绍
    SEGGER公司应该算是一家老牌的调试工具以及RTOS及中间件的生产商。SEGGER公司成立于1997年,到现在的2014年,有差不多17年的历史了,这家公司主要有两个office,一个是在德国的Hilden,另个在美国的 Massachusetts。官网还有一个他们工作地方的照片,看着很不错,我这里也把这个照片贴上。

4 B! l& E0 P* b6 a8 r
                               1.1.jpg
    SEGGER公司的产品主要有三个方向,分别如下:
1.2.1      RTOS及其中间件
    SEGGER公司的RTOS是embOS,在国内知道的人可能比较少。SEGGER做的embOS和中间件都是以库的形式供用户下载的,除非购买了使用权。产品主要如下:
l  embOS  (Real Time Operating System)
l  embOS/IP  (TCP/IP Stack)
l  emWin (Graphic Software &GUI)  
l  emFile (File System)
l  emUSB Device (USB Device Stack)
l  emUSB Host (USB Host Stack)
l  emModbus(Modbus Stack)        emModbus是今年(2014年)刚刚发布的。
1.2.2      J-Link调试工具
J-Link应该大家都不陌生,它是有SEGGER公司设计的。具体的J-Link产品有好几款,具体如下:
l  J - Link PRO
l  J - Link ULTRA+
l  J - Link PLUS
l  J - Link
l  J - Trace Cortex-M3
l  J - Trace ARM
1.2.3      ProductionProgrammers
这个工具在国内用的比较少,主要如下几款产品:
l   Flasher  ARM
l   Flasher  RX
l   Flasher  STM8
l   Flasher  ST7
l   Flasher  5
l   Flasher  5 PRO
/ A4 g# U2 i1 v, O9 N
上面说的这三项应该算是SEGGER公司的主营产品,更详细的可以上面他们的官网www.segger.com进行了解。

: D" ]" |6 Q; H
收藏 1 评论13 发布时间:2015-1-6 16:13

举报

13个回答
baiyongbin2009 回答时间:2015-1-6 16:13:35
本帖最后由 baiyongbin2009 于 2015-1-6 16:26 编辑
+ y/ D' T0 D, x+ e8 D) F6 g6 @, |+ _# a  g* ?  r6 {
1.3  STemWin介绍
    emWin5.xx版本设计出来的界面还是非常漂亮的,先贴几个相关的设计图片,让大家有一些感官的认识。
1.3.1       STemWin设计界面
* S. t7 @$ t1 Z% s, t
l  第一幅是官方设计的图片
1.2.png

* P' W4 C% K) U
整体来说,这些图片还是非常漂亮的,不过这些界面不是用专门的控件显示出来的,使用的2D绘图配合内存设备管理实现的。
l  下面的是在STM32-V5开发板上面实现的界面
    总的来说这些界面还是非常漂亮的,关于STM32-V5开发板更详细的资料可以看如下两个地址:
1.3.jpg

! ]5 r7 o1 O& Q+ \1 f+ ^, ^
, f6 F% U. V( n1 w- g6 I/ b
1.4.jpg

" v" h1 O* P4 e" k
9 g4 V5 |: b% V. d& v
1.5.jpg

1 p6 x2 W* o/ K; ?: ^; ^6 e
1.3.2       目标系统(硬件)

4 Y8 W5 ?, o1 g
目标系统必须具有:
  l  一个CPU(8/16/32/64位)
  l  一个具有最小内存的RAM和ROM
  l  一个完整图形显示器 (任何类型和任何分辨率)
         存储器要求取决于使用的是软件的哪部分以及目标编译器的效率。因此不可能指定精确的值,但是以下值适用于典型的系统。
小系统 (无窗口管理器)
  l  RAM:100字节
  l  堆栈:600字节
  l  ROM:10-25 kb(取决于所使用的功能)
大系统 (包含窗口管理器和小工具)
  l  RAM:2-6 kb(取决于所需的窗口数)
  l  堆栈:1200-1800字节 (取决于所使用的功能)
  l  ROM:30-60 kb(取决于所使用的功能)
        请注意,如果应用程序使用了很多字体,则对ROM的要求会提高。上述所有值都是粗略估算值,不保证能正常使用。
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  基本软件配备多种不同的字体:4*6、6*8、6*9、8*8、8*9、8*16、8*17、8*18、24*32以及像素高度为8、10、13、16的比例字体。
  l  可以定义新的字体并只需简单链接。
  l  只有应用程序使用的字体才实际链接到生成的可执行程序,从而使ROM使用最小。
  l  字体可分别在X和Y方向完全缩放。
  l  可使用字体转换器;主机系统 (即Microsoft Windows)上有的任何字体都可以转换。
字符串/值输出例程
  l  例程可以十进制、二进制、十六进制、任何字体形式显示值。
  l  例程可以十进制、二进制、十六进制、任何字体形式编辑值。
窗口管理器(WM)
  l  完整的窗口管理操作,包括裁剪。窗口的客户区以外的区域不可能被覆盖。
  l  窗口可以移动和调整大小。
  l  支持回调例程 (可选择是否使用)。
  l  WM使用最小的RAM(每个窗口大约50字节)。
PC界面外观的可选小工具
  l  提供各种小工具 (窗口对象,也称为控件)。它们通常自动操作并且简单易用。
支持触摸屏和鼠标
  l  对于按钮小工具等窗口对象,emWin提供触摸屏和鼠标支持。
PC工具
  l  模拟脉冲查看器。
  l  位图转换器。
  l  字体转换器。

, t, a7 o" k5 }) i4 f
baiyongbin2009 回答时间:2015-1-6 16:13:49
本帖最后由 baiyongbin2009 于 2015-1-6 16:31 编辑 ' C( Y2 j' u7 Q  e; ^

. m0 y2 u2 [% N% B& ^  p" G: x
1.4  STM32F103和407跑STemWin性能测试
    以前论坛上以及群里面的一些客户对STM32F103和407跑STemWin持怀疑态度,觉得跑不起来,或者说实时性不行,刷屏比较慢,这里我专门的做了一些测试。
1.4.1       刷色块" J3 c6 {7 D! O
l  测试F4驱动RA8875的7寸800*480分辨率的屏。
    优化底层的情况下,刷整个屏
1.7.png
    没有优化底层的情况下,刷整个屏
1.8.png
    通过上面的测试,有没有看到差距,底层没有经过优化的要620ms,而优化以后的刷整个屏只要25ms,620 / 25 = 24.8倍,能差出这么多来,可见经过优化和没有优化的差距之大。由于RA8875有刷色块的指令,这里再用3.0寸的测试一下(3.0寸的没有专门的刷色块指令)。
l  测试F4驱动SPFD5420的3寸400*240分辨率的屏。
    优化底层的情况下,刷整个屏
1.9.png
    没有优化底层的情况下,刷这个屏
1.10.png
    有没有看到差距,这里差出10倍来。
1.4.2       刷控件* s, b- d. Y2 `+ x2 T& T; f
l  测试F4驱动RA8875的7寸800*480分辨率的屏。
    这里刷一个如下图所示样子的控件,大小800*480
1.11.png
      优化底层的情况下,刷整个控件
1.12.png
    没有优化底层的情况下,刷整个控件
1.13.png
      有没有看到差距。
l  测试F4驱动SPFD5420的3寸400*240分辨率的屏。
    现在用3.0的屏刷控件,优化底层的情况下,刷整个控件
1.14.png
    没有优化底层的情况下,刷整个控件
1.15.png
    通过上面的比较,大家有没有看到差距,是否还对用F1,F4跑emWin界面存在疑虑?对于刷图片,本身STM32F1,STM32F4刷图片的效果就比较差,这里就不做测试了。通过这个测试也说明了很重要的一点,那就是优化底层驱动的重要性。

, M2 Q( X5 g% g8 W( _
* F0 b  l  W# Q8 _1 J9 j+ `, Q0 ^. u6 V8 s' v8 U, n
baiyongbin2009 回答时间:2015-1-6 16:14:17
本帖最后由 baiyongbin2009 于 2015-1-6 16:31 编辑 ( }) r1 H  `# m  h" B
% M. _2 K) O4 p* t# {$ X2 @
1.5  STemWin论坛
    自从国内的uCGUI论坛关闭以后,这方面比较好的论坛就很少了,论坛对于STemWin的发展也很重要。针对STemWin,我们自己建立的论坛:http://bbs.armfly.com/thread.php?fid=12。有兴趣的可以在论坛跟大家探讨相关的应用。
    SEGGER官方也有自己的emWin论坛,地址是:http://forum.segger.com/
1.6  总结
    关于STemWin的介绍就跟大家说这么多,更详细的可以上我们的论坛进一步讨论。还有一点要说明的就是SEGGER公司的所有软件都是收费的,收费标准看这里:http://www.segger.com/pricing.html

9 N" ?$ m/ Y& ]; X
baiyongbin2009 回答时间:2015-1-6 16:27:41
baiyongbin2009 发表于 2015-1-6 16:13
5 x+ U5 e9 Y8 s5 Z; w" X1.3  STemWin介绍    emWin5.xx版本设计出来的界面还是非常漂亮的,先贴几个相关的设计图片,让大家有一些 ...
4 T2 [: f) v# K' W. B+ y5 b
1.3.4       RTOS对STemWin多任务的支持
    基本常见的RTOS都支持STemWin的多任务,移植起来也比较的简单,下面这些是官方提供好的移植。
1.6.png
1.3.5       STemWin基本的内存需要

* m5 F. {) y, L3 C
Example
Hello world
Window application
ROM
GUI core
5.9 kB
43 kB

- Y  P; G1 R& j. P1 ~( v
Fonts
1.8 kB
12.5 kB
- _0 {! S/ m6 n  }
Application
38 B
2.7 kB
  _5 X9 S: }0 O+ @2 E0 K
Startup code
300 B
300 B

& U& l; W( M0 h) j( w
Library
0.1 kB
1.5 kB
) d" G. G" o  J7 Q3 z
Total
8.1 kB
60 kB
ROM
GUI core
62 B
5.2 kB
& P5 k- w: w/ G2 u
Application
-
40 B
* d: k+ G, n/ u
Stack
272 B
1.4 kB

% A3 T, t4 x1 l
Total
334 B
6.6 kB
        这个只是官方提供的基本数据,仅供大家参考。具体还要看实际应用。
1.3.6       STemWin当前支持的控件
    由于emWin在不断的更新当中,这里是当前支持的大部分控件,但不是全部。
1.16.1.jpg
1.16.2.png
1.16.3.png
1.16.4.jpg
% V; N3 b! J) G; M; t
巅峰残狼 回答时间:2015-1-6 17:30:41
把你的1-60期全发上来吧,一个一个发,你得60次
巅峰残狼 回答时间:2015-1-6 17:31:10
忘了说了,这个确实原创,支持
aderson 回答时间:2015-1-6 17:37:45
支持楼主。这样的行为很英勇
dajin123 回答时间:2015-1-7 09:23:02
支持楼主多多分享
zhaoshan413 回答时间:2015-1-7 09:46:42
感谢分享...
lkl0305 回答时间:2015-1-9 17:15:53
期待后期持续更新啊
baiyongbin2009 回答时间:2015-1-9 17:33:34
lkl0305 发表于 2015-1-9 17:15
& x9 y0 W$ Z& M% G9 j" e期待后期持续更新啊

- ~1 {& Z# W# R. H0 t60期教程会全部更新到论坛的。完整PDF下载可以在这里:http://bbs.armfly.com/read.php?tid=2932
一木320 回答时间:2015-9-11 13:57:33
多谢分享, 好全,全是干货啊
ningjw 回答时间:2015-9-18 12:18:53
感谢分享

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版