emWin 实战指南
版本
1.0.0
更新内容
-
修订历史
日期
2014/7/1
前言
本教程讲解如何在 STM32 上设计 GUI 应用,使用的是野火 STM32-ISO 开发板平台,
以 STemWin GUI 库为例子进行讲解 (STemWin 可以理解为 emWin\uCGUI,详见本教程说
明)。
2 / 156
目录
前言 .................................................................................................................................................. 2
第一部分:emWin 简介 .................................................................................................................. 6
第 1 章
emWin 是什么? .............................................................................................. 7
1.1 emWin 简介 ................................................................................................................ 7
1.2 emWin 与 ucGUI、STemWin 的区别及联系 ........................................................... 7
1.3 emWin 的应用场合 .................................................................................................... 8
第 2 章
初识 emWin ...................................................................................................... 9
2.1 emWin 的获取 ............................................................................................................ 9
2.2 emWin 文件简介 ........................................................................................................ 9
2.3 emWin 应用的软件架构 .......................................................................................... 10
第二部分 :emWin 在 windows 上的仿真 ................................................................................... 12
第 3 章
搭建 emWin 的 windows 仿真环境 ............................................................... 13
3.1 仿真版本的 emWin 文件介绍 ................................................................................. 13
3.2 使用 VS2013 仿真 emWin ....................................................................................... 13
第 4 章
emWin 仿真工程文件 .................................................................................... 17
4.1 emWin 仿真工程概览 .............................................................................................. 17
4.2 Application 文件夹 ................................................................................................... 17
4.3 Config 文件夹 ........................................................................................................... 18
4.4 GUI 文件夹 ............................................................................................................... 23
4.5 Sample 文件夹 .......................................................................................................... 24
第 5 章
Hello emWin ................................................................................................... 25
5.1 配置工程文件 ........................................................................................................... 25
5.2 学习 BASIC_HelloWorld 工程代码 ........................................................................ 27
第 6 章
使用《emWin 用户手册》 ............................................................................ 29
6.1 《emWin 用户手册》简介 ...................................................................................... 29
6.2 根据函数名查找库函数说明 ................................................................................... 30
6.3 根据功能查找库函数 ............................................................................................... 31
第 7 章
emWin 学习之旅 ............................................................................................ 34
第三部分:emWin 应用实例 ........................................................................................................ 35
第 8 章
在野火开发平台应用 emWin ........................................................................ 35
8.1 野火 STM32-ISO 开发平台简介 ............................................................................. 35
8.1.1 STM32F103ZET6 芯片 ................................................................................. 36
8.1.2 外部 SRAM 芯片 ........................................................................................... 37
3 / 156
8.1.3 液晶显示屏及触摸屏 .................................................................................... 37
8.2 野火 GUI 效果一览 .................................................................................................. 38
第 9 章
液晶屏基础 ..................................................................................................... 40
9.1 LCD 控制器简介 ...................................................................................................... 40
9.1.1 ILI9341 控制器结构 ...................................................................................... 40
9.1.2 像素点的数据格式 ........................................................................................ 41
9.1.3 ILI9341 的通讯时序 ...................................................................................... 42
9.2 用 STM32 驱动 LCD ................................................................................................ 43
9.2.1 FSMC 简介 .................................................................................................... 43
9.2.2 用 FSMC 模拟 8080 时序.............................................................................. 45
9.3 触摸屏感应原理 ....................................................................................................... 46
9.4 XPT2046 触摸屏控制器 .......................................................................................... 46
9.5 LCD 触摸屏画板实验 .............................................................................................. 47
9.5.1 实验描述及工程文件清单 ............................................................................ 47
9.5.2 配置工程环境 ................................................................................................ 48
9.5.3 main 文件 ....................................................................................................... 49
9.5.4 初始化 FSMC 模式 ....................................................................................... 50
9.5.5 FSMC 模拟 8080 读写参数、命令 ............................................................... 55
9.5.6 液晶屏画点函数 ............................................................................................ 58
9.5.7 触摸屏校正 .................................................................................................... 61
9.5.8 检测触点、画点 ............................................................................................ 64
9.5.9 实验现象 ........................................................................................................ 65
emWin 基本功能移植 .................................................................................... 67
第 10 章
10.1 移植液晶驱动(emWin_basic) ................................................................................ 67
10.1.1 实验描述及工程文件清单 .......................................................................... 67
10.1.2 配置工程环境 .............................................................................................. 67
10.1.3 emWin 的初始化过程 ................................................................................. 69
10.1.4 GUI_X_Config 函数 .................................................................................... 70
10.1.5 LCD_X_Config 函数 ................................................................................... 72
10.1.6 LCD_X_DisplayDriver 函数 ....................................................................... 82
10.1.7 为 emWin 提供系统定时 ............................................................................ 83
10.1.8 使用 emWin 点亮液晶屏 ............................................................................ 84
10.1.9 实验步骤及现象 .......................................................................................... 85
10.2 移植触摸驱动 ......................................................................................................... 87
10.2.1 实验描述及工程文件清单 .......................................................................... 87
10.2.1 配置工程环境 .............................................................................................. 87
10.2.2 emWin 的液晶驱动接口 ............................................................................. 88
10.2.3 定时调用触摸驱动 ...................................................................................... 91
10.2.4 触摸校准 ...................................................................................................... 91
10.2.5 触摸滤波 ...................................................................................................... 97
10.2.6 实验步骤及现象 .......................................................................................... 99
10.3 测试官方演示例程 ............................................................................................... 100
10.3.1 实验描述及工程文件清单 ........................................................................ 100
10.3.2 配置工程环境 ............................................................................................ 101
10.3.3 运行测试例程 ............................................................................................ 102
4 / 156
10.3.4 实验步骤及现象 ........................................................................................ 104
emWin 扩展功能移植 .................................................................................. 106
第 11 章
11.1 添加文件系统 ....................................................................................................... 106
11.1.1 实验描述及工程文件清单 ........................................................................ 106
11.1.2 测试文件系统 ............................................................................................ 107
11.1.3 实验步骤及现象 ........................................................................................ 110
11.2 使用外部 SRAM .................................................................................................. 112
11.2.1 实验描述及工程文件清单 ........................................................................ 112
11.2.2 初始化外部 SRAM ................................................................................... 113
11.2.3 给 emWin 分配外部 SRAM 空间 ............................................................. 114
11.2.4 实验步骤及现象 ........................................................................................ 116
野火 GUI 例程介绍 ...................................................................................... 117
第 12 章
12.1 野火 GUI 初体验 .................................................................................................. 117
12.1.1 实验步骤 .................................................................................................... 117
12.1.2 实验现象说明 ............................................................................................ 117
12.2 野火 GUI 例程框架 .............................................................................................. 125
12.2.1 主要工程文件 ............................................................................................ 125
12.2.2 初始化板载外设 ........................................................................................ 127
12.2.3 创建桌面 .................................................................................................... 129
12.2.4 野火 GUI 中的应用链表 ........................................................................... 146
野火 GUI 应用 .............................................................................................. 154
第 13 章
附录 A 软件安装 .......................................................................................................................... 155
附录 B 参考文献 ......................................................................................................................... 156
5 / 156
第一部分:emWin 简介
6 / 156
第1章 emWin 是什么?
1.1 emWin 简介
简而言之,emWin(大概是 embed win 的缩写)是 Segger 公司针对嵌入式平台开发的图
形软件库,通过调用 emWin 提供的函数接口,开发嵌入式图形界面应用变得简单而快捷。
而图形软件库究竟是什么呢?就是一些与图形界面相关的函数,它提供接口给用户调
用。例如,在没有使用图形软件库时,要控制 LCD 显示一个圆,需要用户自行根据 LCD
驱动编写画圆的函数,而使用图形界面软件库的话,这个画圆函数已经由该软件库提供给
用户,用户只需要调用这个函数,设置圆的半径、圆心、颜色就可以画出自己想要的圆,
不需要再考虑画圆的算法了。
1.2 emWin 与 ucGUI、STemWin 的区别及联系
在国内的嵌入式行业中,由于 uC/OS 系统的名气,大家比较熟悉的嵌入式图形软件库
是 uC/GUI,但大部分人不知道,其实 uC/GUI 是 Segger 公司为 Micrium 公司(制作 uC/OS
的公司)定制的图形软件库,说是定制,但其实它跟 emWin 的区别并不大,以致于本人并
不知道它们在功能上究竟差别在何处。比较确定的是旧版本 uC/GUI 在网上还可以找到开
源的代码,而当前新版本的 emWin 及 uC/GUI 只对用户提供了库文件,是不开源的。
另外,Segger 公司还向 ST 公司出售了 emWin 的版权,从而 ST 公司也得到了定制版
的 emWin,然后改了名字叫 STemWin。当用户在 STM32 芯片上使用 emWin 软件库时,是
不需要向 emWin 或 ST 公司付费的。
总而言之,uC/GUI 和 STemWin 都是 Segger 公司的 emWin 产品,而且它们的版本编
号是统一的,如 uC/GUI 目前最新版本命名为 uC-GUI V5.24,STemWin 最新版本命名为
STemWin Library V5.24,emWin 最新版本则为 emWin V5.24,所以,要比较这三个软件库
功能上的区别,只需要看它们的版本号就可以了。
虽然功能上没有区别,但因为版权付费问题,在实际使用时就需要根据自己的平台来
选择。由于我们使用的是 STM32 开发平台,自然我们选择的是 STemWin。因为如果我们
选择的是 emWin 或 uC/GUI 使用到 STM32 产品上,同样是需要向 Segger 或 Micrium 公司
购买版权的,而使用 STemWin 就不存在这个问题。在 STemWin 里有一个检测机制确定代
码所运行的平台,若是 STM32 芯片,则运行正常,若非 STM32 芯片,就不能正常使用了。
在本教程后续的讲解中,无特殊说明,不再区分 emWin 和 STemWin。
7 / 156
1.3 emWin 的应用场合
emWin 并不只是提供了画圆之类的基本绘图函数库,它的主要功能如下:
绘制 2-D 图形:绘制圆、椭圆、多边形、弧线、线图和饼形图等;
显示位图文件:显示 BMP、JPEG、GIF 及 PNG 格式的图片文件;
显示文字:支持显示多国语言的文字,如中英文;
处理用户输入:如键盘、鼠标及触摸屏的人机交互输入处理;
提供各种窗口对象:这些窗口对象也被称为图形控件,最常见的如菜单控件、窗
口控件、按键控件、复选框及框架窗口控件等,有了这些控件,就非常容易地制
作出类似 windows 系统的控制界面了。
emWin 的这些功能,就是为了解决人机交互应用的设计难题。而它对 ROM 和 RAM
的消耗相对来说并不高。据官方统计,它们提供的一个基本例程(移植了 emWin 函数库,
显示“HelloWorld”),消耗 ROM 60KB,RAM 7KB,这在当前大多数嵌入式平台都是可
以接受的。又因为 emWin 可以在多任务系统及裸机的平台上运行,尤其适合嵌入式乱七八
糟的开发要求,自然使得 emWin 在嵌入式人机交互场合中大放异彩。一些使用 emWin 制
作出来的效果,见图 3-4。
图 1-1 emWin 效果演示效果图
8 / 156