ImageVerifierCode 换一换
格式:DOCX , 页数:51 ,大小:1.68MB ,
资源ID:10022565      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10022565.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(emWin使用文档.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

emWin使用文档.docx

1、emWin使用文档目录一、emWin介绍 11.1 emWin简介 11.2 emWin应用的软件架构 2二、emWin用户手册介绍及使用 22.1 emWin用户手册简介 22.2 根据函数名查找库函数说明 32.3 根据功能查找库函数 3三、emWin开发过程中调用API及功能 43.1 通用小工具API 43.2 BUTTON API 53.3 EDIT API 6四、搭建emWin的Windows仿真环境 74.1 仿真版本emWin文件介绍 74.2 使用 VS2010 仿真 emWin 84.3 emWin仿真工程概览 9五、 GUI_Builder 185.1 简介 185.2

2、创建对话框 195.3 GUI_Builder的输出 205.4 如何使用C文件 24六、项目代码结构概述 24七、emWin的keil项目介绍 327.1 keil环境搭建 327.2 keil项目主要文件简介 327.3 硬件驱动配置(LCD、SDRAM) 34八、Keil环境下实板调试 36九、问题总结 37参考资料: 37软件工具:Keil 4、VS2010硬件工具:TFT-LCD7寸、LPC1788控制板一、emWin介绍1.1 emWin简介emWin(大概是 embed win 的缩写)是 Segger 公司针对嵌入式平台开发的图形软件库,通过调用 emWin 提供的函数接口,开

3、发嵌入式图形界面应用变得简单而快捷。图形软件库就是一些与图形界面相关的函数,它提供接口给用户调用。例如,在没有使用图形软件库时,要控制 LCD 显示一个圆,需要用户自行根据 LCD驱动编写画圆的函数,而使用图形界面软件库的话,这个画圆函数已经由该软件库提供给用户,用户只需要调用这个函数,设置圆的半径、圆心、颜色就可以画出自己想要的圆,不需要再考虑画圆的算法了。emWin 并不只是提供了画圆之类的基本绘图函数库,它的主要功能如下: 绘制 2-D 图形:绘制圆、椭圆、多边形、弧线、线图和饼形图等; 显示位图文件:显示 BMP、JPEG、GIF 及 PNG 格式的图片文件; 显示文字:支持显示多国语

4、言的文字,如中英文; 处理用户输入:如键盘、鼠标及触摸屏的人机交互输入处理; 提供各种窗口对象:这些窗口对象也被称为图形控件,最常见的如菜单控件、窗口控件、按键控件、复选框及框架窗口控件等,有了这些控件,就非常容易地制作出类似 windows 系统的控制界面了。 emWin 的这些功能,就是为了解决人机交互应用的设计难题。而它对 ROM 和 RAM的消耗相对来说并不高。据官方统计,它们提供的一个基本例程(移植了 emWin 函数库显示“HelloWorld”),消耗 ROM 60KB,RAM 7KB,这在当前大多数嵌入式平台都是可以接受的。又因为 emWin 可以在多任务系统及裸机的平台上运行

5、,尤其适合嵌入式乱七八糟的开发要求,自然使得 emWin 在嵌入式人机交互场合中大放异彩。1.2 emWin应用的软件架构图1-1从最底层看起, 首先是硬件层,硬件层就是指最基本的板级支持软件包(BSP),也就是我们常说的底层驱动,它提供了对硬件平台资源最直接的访问;emWin 软件库承上启下,它运行在硬件层之上,与硬件层之间仅靠液晶驱动连接起来,而向应用层则提供了各种便于用户制作 GUI 应用的接口。 在没有使用 emWin 的软件架构中,很可能就是由硬件层直接过渡到应用层,甚至根本没有分层的概念,这样的应用程序将十分依赖于某个特定的硬件平台,不容易迁移到其它设备之中。从这个架构图可以看出,

6、只需要编写好液晶驱动这个粘合 emWin 库和硬件BSP 层的中间件,就可以正常使用 emWin 了,迁移应用到不同的平台也简单得多。二、emWin用户手册介绍及使用2.1 emWin用户手册简介emWin 用户手册就是关于 Segger 官方给出的 emWin 帮助文档,它的内容包括emWin 简介、仿真、各种库函数详细信息、液晶驱动移植、配套工具软件的使用、emWin性能及资源占用都一一进行了说明,对于没有开源代码的软件库,其帮助文档的重要性不言而喻。2.2 根据函数名查找库函数说明我们会经常遇到一些陌生的 emWin 库函数,库函数大多以 GUI 为前缀命名,如 GUI_Init、GUI

7、_DispString 等 GUI_xxx 格式。当我们想要获这些库函数详细信息时,可在emWin 用户手册中搜索。如下图示:图2-12.3 根据功能查找库函数我们根本不知道 emWin 库有没有这种功能的函数,就算知道有,也常常忘记了函数的名字。这时候我们就可以根据emWin 用户手册的目录来找了,emWin 用户手册对它每种功能的函数集都有一个函数列表,简要介绍函数的功能,浏览相关的函数列表及其简介,就可以找到相关的库函数名了,这时再搜索该函数名就可以获得详细的函数说明。 例如我们想查找某个在特定位置显示字符串的函数,就可以在用户手册的标签页中找到“文本 API”标签(其它功能函数如“评估

8、 API(此处文档翻译有误,应为:数值 API)”、“图形 API”等),然后就可以在文本 API 函数列表中找到一个名叫 GUI_DispStringAt 的函数,其功能简介是“在指定位置显示字符串”,它正符合我们的要求,再根据给出的函数名,就可以搜索到该函数的详细说明,如下图示:图2-2三、emWin开发过程中调用API及功能3.1 通用小工具API例程描述WM_DeleteWindow()删除窗口WM_DisableMemdev()禁止使用存储设备进行重绘WM_EnableMemdev()启用存储设备用于重绘WM_InvalidateWndow()使窗口无效WM_Paint()立即绘制或

9、重绘窗口WM_DelectWindow()原型void WM_DeleteWindow(WM_HWIN hWin);参数:hWin 描述:窗口句柄其他信息删除窗口前,他将收一条WM_DELETE消息,此消息通常用于删除所使用的任何对象(小工具),并释放窗口动态内存分配。如果指定的窗口具有任何现有子窗口,则在删除窗口前自动删除这些子窗口,因此不必分别删除子窗口,窗口删除前会发送一条WM_NOTIFICATION_CHILD_DELETED消息到其父窗口。WM_DisableMemdev()原型void WM_DisableMemdev(WM_HWIN hWin);参数:hWin 描述:窗口句柄W

10、M_EnableMemdev()原型void WM_EnableMemdev(WM_HWIN hWin);参数:hWin 描述:窗口句柄WM_InvalidateWndow()原型void WM_InvalidateWindow(WM_HWIN hWin);参数:hWin 描述:窗口句柄WM_Paint()原型void WM_Paint(WM_HWIN hWin);参数:hWin 描述:窗口句柄3.2 BUTTON API例程描述BUTTON_Create()创建BUTTON小工具BUTTON_SetBkColor()设置按钮背景色BUTTON_SetDefaultFont()设置BUTTON

11、小工具默认字体BUTTON_SetDefaultTextAlign()设置BUTTON小工具默认文本对齐方式BUTTON_SetBitmap()设置显示指定按钮时要使用的位图BUTTON_Create()描述在指定位置创建指定尺寸大小的BUTTON小工具原型BUTTON_Handle BUTTON_Create(int x0,int y0,int xSize ,ySize int Id,int Flags);参数:x0 描述:按钮的最左像素(在父窗口中) y0 按钮的最上像素(在父窗口中) xSize 按钮的水平尺寸(单位:像素) ySize 按钮的垂直尺寸(单位:像素) Id 按钮按下时要返

12、回的ID Flags 窗口创建标记,为了使小工具可见,通常是WM_CF_SHOW返回值已创建BUTTON小工具的句柄,函数失败时为0;BUTTON_SetBkColor()原型void BUTTON_SetBkColor(BUTTON_Handle hObj, unsiged int Index,GUI_COLOR Color);参数:hObj 描述:按钮的句柄 Index 颜色的索引 Color 要设置的颜色BUTTON_SetDefaultFont()描述设置用于显示BUTTON小工具文本GUI_FONT结构的指针原型void BUTTON_SetDefaultFont(const GUI

13、_FONT * pFont);参数: pFont 描述:要使用的GUI_FONT指针BUTTON_SetDefaultTextAlign()描述设置用于显示BUTTON小工具文本的默认对齐方式原型void BUTTON_SetDefaultTextAlign(int Align);参数:Align 描述:要使用的文本对齐方式BUTTON_SetBitmap()原型Void BUTTON_SetBitmap(BUTTON_Handle hObj, unsigned int Index,const GUI_BITMAP * pBitmap);参数:hObj 描述:按钮的句柄 Index 位图的索引

14、 pBitmap 位图结构的指针其他信息如果仅设置了未按下状态的位图,则当按钮按下或者禁用时,按钮也将显示该位图。3.3 EDIT API例程描述EDIT_Create()创建EDIT小工具EDIT_GetText()获取用户输入EDIT_SetFont()选择文本字体EDIT_SetMaxLen()设置编辑字段的最大字符EDIT_SetVlaue()设置当前值EDIT_Create()原型EDIT_Handle EDIT_Create(int x0,int y0,int xsize,int ysize,int Id,int ,MaxLen,int Flags);参数:x0 描述:编辑字段的最

15、左像素(在父坐标中) y0 编辑字段的最上像素(在父坐标中) xsize 编辑字段的水平尺寸(单位:像素) ysize 编辑字段的垂直尺寸(单位:像素) Id 将返回的ID MaxLen 最大字符数 Flags 窗口创建标记 EDIT_GetText()原型Void EDIT_GetText(EDIT_Handle hObj,char * sDest,int MaxLen);参数:hObj 描述:编辑字段句柄 sDest 指向缓冲区指针 MaxLen 缓冲区的大小EDIT_SetFont()原型Void EDIT_SetFont(EDIT_Handle hObj,const GUI_FONT

16、*pFont);参数:hObj 描述:编辑字段的句柄 pFont 字体的指针EDIT_SetMaxLen()原型Void EDIT_SetMaxLen(EDIT_Handle hObj,int MaxLen);参数:hObj 描述:编辑字段的句柄 MaxLen 字符数EDIT_SetVlaue()原型void EDIT_SetVlaue(EDIT_Handle hObj,I32 Value);参数:hObj 描述:编辑字段的句柄 Value 新值四、搭建emWin的Windows仿真环境4.1 仿真版本emWin文件介绍emWin 的 windows 仿真版本是免费的,大家可以直接在 Segg

17、er 官网下载,下载链接: 下载得到压缩包的文件名为:SeggerEval_WIN32_MSVC_MinGW_GUI_V522.zip,它是 emWin 的 5.22 版本,解压该文件,其文件内容说明如下图示:emWin 仿真版本的工程在 windows 上是使用Microsoft visual studio 2010作为编译器的。4.2 使用 VS2010 仿真 emWin1) 解压文件。解压 emWin 仿真版本压缩包,注意解压后的文件路径不要出现中文,否则在编译时会出错的; 2) 打开仿真工程。安装了 VS2013 集成环境后,打开 emWin 仿真版本的目录,找到“Simulation

18、Trial.sln”文件,双击打开,打开后会弹出一个对话框提示 VC+版本问题的,直接选择“是”即可,如下图示:3) 开始编译工程。可以直接按快捷键“F5”,或者点击编译器中的调试按钮,编译并运行工程,编译器会弹出一个提示框,我们在该对话框打上勾,并选择“是”,让它以后都不用再提示我们选择生成新项目。接下来就开始了编译过程,正常的话都会编译通过,然后弹出一个 emWin 仿真运行的界面,如下图示:4.3 emWin仿真工程概览主要包含了 Application、Config、GUI、Sample、Simulation 目录及一些外部依赖项文件,如下图示:4.3.1 Application文件夹

19、Application 文件夹是演示例程的应用文件包。我们编译的文件都是在这个 Application 目录下的,它包含了官方演示例程的应用文件,展开 Application 目录后,可以到这些文件命名都很规范,基本上每个文件对应一个演示例程的小环节,如果看到很炫酷的示例,可以到这里找找它的源代码来学习(演示例程学习难度较大,适合有一定 emWin 基础的用户)。文件列表如下图:4.3.2 Config 文件夹Config 文件夹是显示配置文件包。在 Config 文件夹下,有 GUIConf.c、GUIConf.h、LCDConfig.c、LCDConfig.h 及 SIMConfig.c

20、文件,其中前三个文件在实际的嵌入式平台是非常重要的,它们分别起到了分配存储空间、裁剪 emWin 功能模块和 LCD 底层驱动实现。而 LCDConfig.h 文件没有内容,SIMConfig.c 文件是 VS2013 仿真环境需求的一些特定设置,在此我们不作探讨。关于 GUIConf.c、GUIConf.h 与 LCDConfig.c 文件的内容见代码清单如下所示:GUIConf.c文件内容/* SEGGER Microcontroller GmbH & Co. KG * Solutions for real time microcontroller applications * * (c)

21、 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG * * Internet: Support: support * * emWin V5.28 - Graphical user interface for embedded applications *emWin is protected by international copyright laws. Knowledge of thesource code may not be used to write a similar product. This file mayonly be used

22、 in accordance with a license and should not be re-distributed in any way. We appreciate your understanding and fairness.-File : GUIConf.cPurpose : Display controller initialization-END-OF-HEADER-*/#include GUI.h/* Defines*/ Define the available number of bytes available for the GUI/#define GUI_NUMB

23、YTES 0x400000/ Define the average block size/#define GUI_BLOCKSIZE 0x80/* Public code*/* GUI_X_Config* Purpose:* Called during the initialization process in order to set up the* available memory for the GUI.*/void GUI_X_Config(void) / / 32 bit aligned memory area / static U32 aMemoryGUI_NUMBYTES / 4

24、; / / Assign memory to emWin / GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES); GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);/* End of file */GUIConf.c 文件主要包含了一个 GUI_X_Config 函数,在这个函数中向系统申请了一个大 小 为 4MB(0x400000) 的 静 态 空 间 aMemory , 接 着 调 用 emWin 的 库 函GUI_ALLOC_AssignMemory 把 这 个 空 间 分 配 给 emWin , 并 使 用 库 函

25、 数GUI_ALLOC_SetAvBlockSize 设置存储块的平均大小。所以 emWin 的库函数使用的存储空间都是 aMemory 中分配的。在嵌入式平台上,我们需要根据其限制控制分配给 emWin 库的 aMemory 大小,修改宏 GUI_NUMBYTES 即可。LCDConfig.c文件内容/* SEGGER Microcontroller GmbH & Co. KG * Solutions for real time microcontroller applications * * (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co.

26、 KG * * Internet: Support: support * * emWin V5.28 - Graphical user interface for embedded applications *emWin is protected by international copyright laws. Knowledge of thesource code may not be used to write a similar product. This file mayonly be used in accordance with a license and should not be re-distributed in any way. We appreciate your understanding and fairness.-File : LCDConf.cPurpose : Display controller configuration (single layer)-END-OF-HEADER-*/#include GUI.h/* Layer configuration (to be modified)*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1