emWin在Windows上的仿真

本文介绍了如何在Windows上使用Visual Studio 2019社区版仿真emWin环境,包括下载emWin仿真版本、配置VS 2019工程属性、编译运行工程,并提供了emWin仿真文件结构和应用示例的学习方法。
摘要由CSDN通过智能技术生成

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

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

解压该压缩包,其文件内容说明见图 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仿真版本的文件
在这里插入图片描述
3.配置仿真工程属性。成功打开工程后,右键单击SimulationTrial项目,在弹出的选项中选择属性,见图 配置emWin仿真工程属性 ;
在这里插入图片描述
4.在弹出的工程属性页面中,展开链接器选项,进入输入设置;

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

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

7.在忽略特定默认库中添加:LIBC.lib;LIBCMTD.lib,具体见图 配置工程链接器输入属性 ;
在这里插入图片描述
8.接下来转到链接器选项中的高级设置,修改映像具有安全异常处理程序的值为:否,具体见图 配置仿真工程链接器高级设置 。
在这里插入图片描述
9.开始编译工程。工程属性修改完成后,可以直接按快捷键“F5”,或者点击编译器中的“本地Windows调试器”按钮, 编译并运行工程。接下来就开始了编译过程,正常的话都会编译通过,然后弹出一个emWin仿真运行的界面,见图 运行仿真 。
在这里插入图片描述
按照我们以上的步骤,默认编译的是emWin官方的演示例程,它向我们展示了使用emWin库制作出来的GUI效果, 跟嵌入式平台相比,受液晶屏及CPU运行速度的影响,一般其效果会好一些,读者可亲自品味一下。部分仿真效果图见图 emWin演示例程仿真效果图 。
在这里插入图片描述
4.3. emWin仿真文件概览
现在我们来看看emWin仿真工程里的文件,它主要包含了Application、Config、GUI、 Simulation目录及一些外部依赖项文件,见图 emWin仿真工程文件介绍 。
在这里插入图片描述
从V5.38版本开始,emWin仿真工程的文件内容和结构出现了较大变化,下面我们就来介绍一下该工程下的各类文件。

Application文件夹

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

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

#include "GUI.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
//
// Define the available number of bytes available for the GUI
//
#define GUI_NUMBYTES  0x280000

/*********************************************************************
*
*       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 aMemory[GUI_NUMBYTES / 4];
    //
    // Assign memory to emWin
    //
    GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
}

/*************************** End of file ****************************/

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

#ifndef GUICONF_H
#define GUICONF_H

/*********************************************************************
*
*       Multi layer/display support
*/
#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值