emWin在Windows上使用visual studio2019仿真

转自“野火教程”,亲测可用!

 

emWin的Windows仿真版本是免费的,大家可以直接在Segger官网下载, 下载链接:https://www.segger.com/downloads/emwin/

下载得到压缩包的文件名为:SeggerEval_WIN32_MSVC_MinGW_GUI_V548.zip, 它是emWin 的V5.48版本,本教程中我们就以这个版本为例子讲解。

解压该压缩包,其文件内容说明见图 emWin仿真版本文件 。

emWin仿真版本文件

emWin仿真版本的工程在Windows上是使用Visual c++作为编译器的, 而现在Visual c++编译器一般都集成到Visual Studio开发环境中了, 而且由于VC6.0实在是太老太丑,所以在本教程中野火使用VS 2019 社区版 (Microsoft visualstudio community 2019)作为开发环境进行, 请读者自行安装VS 2019 社区版开发环境。

4.2. 使用VS 2019 社区版仿真emWin

接下来我们介绍一下用VS 2019 社区版仿真emWin的步骤。

1.解压文件。解压emWin仿真版本压缩包,注意解压后的文件路径不要出现中文,否则在编译时会出错的;

2.打开仿真工程。安装了VS 2019 社区版集成环境后,打开emWin仿真版本的目录,找到“SimulationTrial.sln”文件,双击打开, 打开后会弹出一个对话框提示VC++版本的问题,直接选择“确定”即可,见图 emWin仿真版本的文件

emWin仿真版本的文件

 

3.配置仿真工程属性。成功打开工程后,右键单击SimulationTrial项目,在弹出的选项中选择属性,见图 配置emWin仿真工程属性 ;

配置emWin仿真工程属性

4.在弹出的工程属性页面中,展开链接器选项,进入输入设置;

5.在其中的附加依赖项中添加:legacy_stdio_definitions.lib,注意添加分号;

6.在忽略所有默认库中填:否;

7.在忽略特定默认库中添加:LIBC.lib;LIBCMTD.lib,具体见图 配置工程链接器输入属性 ;

配置工程链接器输入属性

 

8.接下来转到链接器选项中的高级设置,修改映像具有安全异常处理程序的值为:否,具体见图 配置仿真工程链接器高级设置 。

配置仿真工程链接器高级设置

9.开始编译工程。工程属性修改完成后,可以直接按快捷键“F5”,或者点击编译器中的“本地Windows调试器”按钮, 编译并运行工程。接下来就开始了编译过程,正常的话都会编译通过,然后弹出一个emWin仿真运行的界面,见图 运行仿真 。

运行仿真

按照我们以上的步骤,默认编译的是emWin官方的演示例程,它向我们展示了使用emWin库制作出来的GUI效果, 跟嵌入式平台相比,受液晶屏及CPU运行速度的影响,一般其效果会好一些,读者可亲自品味一下。部分仿真效果图见图 emWin演示例程仿真效果图 。

emWin演示例程仿真效果图

4.3. emWin仿真文件概览

现在我们来看看emWin仿真工程里的文件,它主要包含了Application、Config、GUI、 Simulation目录及一些外部依赖项文件,见图 emWin仿真工程文件介绍 。

emWin仿真工程文件介绍

从V5.38版本开始,emWin仿真工程的文件内容和结构出现了较大变化,下面我们就来介绍一下该工程下的各类文件。

1、Application文件夹

Application文件夹是默认演示例程的应用文件包。在上一个小节中,我们编译的文件都是在这个Application目录下的, 它包含了一个官方演示例程的应用文件,展开Application目录后,可以到这些文件命名都很规范,文件内容一目了然。 读者如果看到很炫酷的示例,可以到这里找找它的源代码来学习(综合演示例程学习难度较大,适合有一定emWin基础的用户)。 emWin仿真工程附带了8个官方演示例程,除了默认启动的例程以外, 其余的演示例程路径位于:\Sample\Application中, Application文件列表见图 Application目录下的文件 。

Application目录下的文件

2、Config文件夹

Config文件夹是显示配置文件包。在Config文件夹下,有GUIConf.c、GUIConf.h、LCDConfig.c、LCDConfig.h及SIMConfig.c文件, 其中前三个文件在实际的嵌入式平台是非常重要的,它们分别起到了分配存储空间、裁剪emWin功能模块和LCD底层驱动实现。 而LCDConfig.h文件没有内容,SIMConfig.c文件是VS 2019 社区版仿真环境需求的一些特定设置,在此我们不作探讨。 

GUIConf.c文件主要包含了一个GUI_X_Config函数,在这个函数中向系统申请了一个大小为2.5MB(0x280000) 的静态空间aMemory, 接着调用emWin的库函数GUI_ALLOC_AssignMemory把这个空间分配给emWin。所以emWin的库函数使用的存储空间都是aMemory中分配的。 在嵌入式平台上,我们需要根据其限制控制分配给emWin库的aMemory大小,修改宏GUI_NUMBYTES即可。 

GUIConf.h文件聚集了各种与emWin功能裁剪相关的宏,如GUI_NUM_LAYERS用于配置emWin的最大可用层数(多显示器及复合视图支持), GUI_OS用于告诉emWin是否运行在带多任务系统的平台上等等,通过设置这些宏,可以方便地根据需要裁剪emWin的大小。

LCDConfig.c文件包含了LCD_X_Config和LCD_X_DisplayDriver两个函数。LCD_X_Config函数调用emWin库函数GUI_DEVICE_CreateAndLink配置了显示驱动及颜色转换格式, 该函数的输入参数是根据Windows系统的环境配置的。接着调用LCD_SetSizeEx配置了显示尺寸,输入参数是本文件中的两个宏: #define XSIZE_PHYS 800 及 #define YSIZE_PHYS 480,也就是说把屏幕配置成了800*480分辨率大小, 我们可以通过修改这两个宏的数值改变仿真时的屏幕尺寸。

LCD_X_DisplayDriver是提供给emWin库的驱动回调函数,该函数根据输入的参数Cmd区分要进行的操作,如LCD_X_INITCONTROLLER表示初始化液晶控制器, LCD_X_ON 表示启动液晶屏,LCD_X_OFF表示关闭液晶屏,这些命令是由用户根据需要选择性实现的。

在使用emWin的应用函数之前,我们需要调用其库函数GUI_Init初始化emWin运行的环境,而GUI_Init函数会执行我们前面提到的GUI_X_Config、LCD_X_Config、 LCD_X_DisplayDriver三个函数,从而完成初始化工作。当我们移植emWin时,主要的移植工作就是根据自己的平台实现这些函数,而emWin的上层应用函数无需修改, 也无法修改,因为那些函数都已经编译进库里了,不开放源码。

3、GUI文件夹

GUI文件夹是emWin库核心文件包。它包含一个Include文件夹和一个Library文件夹,在Include文件夹里的都是emWin库的头文件,由于emWin以库的形式提供给用户, 所以必须带有这些头文件以方便我们使用。Library目录下的GUI.lib就是emWin的库文件了,它是编译好的二进制编码,无法查看源程序。在不同的CPU平台下, 需要使用不同版本的库,如这个工程里的GUI.lib库仅可以用在windows的VC++编译平台下,针对Cortex-M0、M3和M4芯片及IAR、MDK编译环境都有相对应的库文件, 使用时要根据自己的平台选择适当的库文件。

4、Sample文件夹

Sample文件夹是emWin的基础应用示例程序包。我们使用仿真的一个重要目的就是学习这个文件夹下的工程代码。此文件夹从仿真工程的V5.38版本开始不再包含在工程中, 文件结构也有所变化。目前的Sample文件夹包含3个子文件夹:Application,Tutorial和WinMain。这里的Application文件夹包含着另外7个官方演示例程, Tutorial文件夹内提供的都是一个个很小的工程,简化了学习的难度,而且这个文件夹下提供的应用示例更加丰富,基本上涵盖了emWin库提供的所有功能, 当我们在emWin参考手册中看到某些功能不会使用时,可以来这里找找,一般都能找到示例程序,WinMain文件夹则是一些模拟器相关的文件,我们不作讨论。 Sample文件夹组成内容见图 Sample文件介绍 。

Sample文件介绍

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章