ITPub博客

首页 > 嵌入式/内核开发 > 嵌入式/内核开发 > 《LVGL开发指南 V1.0(G4电机开发板专用)》第四章 PC模拟器的使用

《LVGL开发指南 V1.0(G4电机开发板专用)》第四章 PC模拟器的使用

原创 嵌入式/内核开发 作者:正点原子 时间:2026-05-15 17:46:11 0 删除 编辑

第四章 PC模拟器的使用


       PC模拟器是指可以在电脑上模拟其他平台的模拟器软件。在没有硬件的情况下,用户依然可以使用模拟器来调试GUI,除此之外,模拟器对于产品说明书的制作也有很大的用处。LVGL作为一款优秀的 GUI 图形库,它是支持模拟器功能的,并且LVGL官方提供了多个平台的模拟器工程,本书主要介绍VisualStudio模拟器工程的使用。

       本章节将分为以下几个小节:

       4.1 LVGL模拟器工程下载

       4.2 模拟运行LVGL例程

       4.3工程文件解析


        4.1 LVGL模拟器工程下载

       LVGL的VisualStudio模拟器工程的获取方式主要有两种:①正点原子开发板的A盘资料(推荐)、②官方的git仓库。这里建议新手的朋友使用第一种获取方式,因为从官方的git仓库获取该工程,可能会频繁地失败。接下来我们分别介绍这两种获取方式:

       1. 从A盘资料获取

       VisualStudio模拟器工程所在路径:A盘→4,程序源码 →3,扩展例程 →3,LVGL例程 →LVGL例程3 PC端模拟LVGL。注意:这个文件夹里面提供了两个平台的模拟器工程,lv_port_win_visual_studio-master.zip压缩包中存放的是VisualStudio的模拟器工程,界面如下图所示:


图4.1.1 模拟器工程压缩包界面


       2. 从官方的git仓库获取

       打开LVGL官方的在线文档(https://docs.lvgl.io/master/index.html),点击“Get started”选项,界面如图4.1.2所示,然后再点击“Simulator on PC”选项。


图4.1.2 在线文档界面


       进入“Simulator on PC”页面后,即可看到不同平台的LVGL模拟器工程,如下图所示:


图4.1.3 不同平台的模拟工程


       接下来点击上图中的“VisualStudio with SDL driver”选项,进入VisualStudio模拟器工程的下载页面,如下图所示:


图4.1.4 git仓库下载工程的界面


       在这个页面中,我们可以选择压缩包或者git的方式下载模拟器工程。值得注意的是,该仓库中存在子仓库,如果采用压缩包的方式下载工程,还需要将子仓库的文件分别下载,并复制到主工程相应的文件夹当中,子仓库的界面如下图所示:


图4.1.5 子仓库界面


       4.2 模拟运行LVGL例程

       在上一小节中,我们已经获取到VisualStudio模拟器工程,接下来为大家介绍LVGL模拟器工程的使用。

       1. 安装VisualStudio2019

       VisualStudio2019软件的官方下载网址如下(有可能失效):https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes,大家下载后自行安装即可。

       2. 打开模拟器工程

       打开lv_port_win_visual_studio-master文件夹(如果是压缩包,则需要解压出来),双击LVGL.Simulator.sln文件,打开LVGl模拟工程,具体界面如图4.2.1所示:


图4.2.1 打开LVGl模拟工程


       3. 设置配置管理器

       设置平台为x64,如下图所示:


图4.2.2 设置配置管理器


       4. 调试例程代码

       点击“本地Windows调试器”,即可开始调试代码,具体操作界面如下图所示:


图4.2.3 开始调试


       官方例程运行之后,界面如下图所示:


图4.2.4 官方例程界面


        4.3 工程文件解析


       1. LVGL.Simulator.cpp文件

       对于LVGL.Simulator.cpp文件,我们一般只需要关注两个地方:①屏幕分辨率设置;②示例函数的调用。首先来看屏幕分辨率的设置,其在main函数中,如下图所示:


图4.3.1 屏幕分辨率设置


       用户可以根据实际项目中的屏幕分辨率来进行设置,这样模拟出来的效果就更加的贴合实际。注意:LVGL官方的例程,默认仅支持800*480的分辨率。

       接下来,我们看示例函数的调用,其同样在main函数中,如下图所示:


图4.3.2 示例函数调用


       由上图可知,示例函数的调用非常简单,如果用户使用的是LVGL官方的例程,只需要将相应的示例函数取消注释即可;如果需要自行编写测试代码,可直接在此处编写(不推荐),或者另外封装函数,然后在此处调用(推荐)。


       2. lv_conf.h文件

       在LVGL的模拟器项目中, lv_conf.h文件非常重要,该文件负责LVGL功能的裁剪以及设置,这里我们主要介绍几个重点的地方: 

       ①设置颜色深度:

/* 颜色深度: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
#define LV_COLOR_DEPTH   16

       如果实际的项目对于色彩的要求较高,建议根据实际显示屏的颜色深度来进行设置,否则模拟的效果与现实设备运行的效果可能有较大区别。

       ②设置内存大小

#define LV_MEM_SIZE (1024U * 1024U)          /* 字节为单位,建议贴合实际的设备 */

       ③设置显示刷新周期和输入设备读取周期

/* 默认显示刷新周期,LVG将在这段时间内重绘改变过的区域 */
#define LV_DISP_DEF_REFR_PERIOD 10      /*[ms]*/
 
/* 输入设备读取周期(毫秒) */
#define LV_INDEV_DEF_READ_PERIOD 10     /*[ms]*/

       ④字库的使用

/* 字库使用,设置1启用,设置0为失能 */
#define LV_FONT_MONTSERRAT_8  1
#define LV_FONT_MONTSERRAT_10 1
#define LV_FONT_MONTSERRAT_12 1
#define LV_FONT_MONTSERRAT_14 1
#define LV_FONT_MONTSERRAT_16 1
#define LV_FONT_MONTSERRAT_18 1
#define LV_FONT_MONTSERRAT_20 1
#define LV_FONT_MONTSERRAT_22 1
#define LV_FONT_MONTSERRAT_24 1
#define LV_FONT_MONTSERRAT_26 1
#define LV_FONT_MONTSERRAT_28 1
#define LV_FONT_MONTSERRAT_30 1
#define LV_FONT_MONTSERRAT_32 1
#define LV_FONT_MONTSERRAT_34 1
#define LV_FONT_MONTSERRAT_36 1
#define LV_FONT_MONTSERRAT_38 1
#define LV_FONT_MONTSERRAT_40 1
#define LV_FONT_MONTSERRAT_42 1
#define LV_FONT_MONTSERRAT_44 1
#define LV_FONT_MONTSERRAT_46 1
#define LV_FONT_MONTSERRAT_48 1

       如果工程中有用到相应的字库,则需要将其开启,否则会出现报错。

       ⑤开启/关闭官方例程

/*Show some widget*/
#define LV_USE_DEMO_WIDGETS        1
#if LV_USE_DEMO_WIDGETS
#define LV_DEMO_WIDGETS_SLIDESHOW  1
#endif
 
/*Demonstrate the usage of encoder and keyboard*/
#define LV_USE_DEMO_KEYPAD_AND_ENCODER     1
 
/*Benchmark your system*/
#define LV_USE_DEMO_BENCHMARK   1
 
/*Stress test for LVGL*/
#define LV_USE_DEMO_STRESS      1
 
/*Music player demo*/
#define LV_USE_DEMO_MUSIC       1
#if LV_USE_DEMO_MUSIC
# define LV_DEMO_MUSIC_SQUARE       1
# define LV_DEMO_MUSIC_LANDSCAPE    1
# define LV_DEMO_MUSIC_ROUND        1
# define LV_DEMO_MUSIC_LARGE        1
# define LV_DEMO_MUSIC_AUTO_PLAY    1
#endif

       上述代码中,不同的宏定义可以控制相应的LVGL例程,当它们置1时,表示开启例程。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040860/viewspace-3117996/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2024-08-30

  • 博文量
    588
  • 访问量
    764012