LVGL V9.0基于VS2022仿真搭建(2)

news2025/6/16 3:23:08

完整Demo,lvgl,lvgl_drivers相关资料下载

链接:https://pan.baidu.com/s/1h3OKCIBQRX0Hn7KjZsynqg
提取码:sc2l

下载的lv_drivers中的win32drv.c及win32drv.h文件是做了修改的,官网下载的lv_drivers编译会报错,因为lvgl一些移植接口文件做了修改导致编译不通过。

其它资料下载

链接:https://pan.baidu.com/s/1nV9jojPEPWSWZdYhaCZWTA
提取码:91j8

下载资料后解压文件及安装VS2022 ,选择通用windows平台开发及Visual Studio进行安装,安装步骤略

在这里插入图片描述

打开VS2022,点击创建新项目

在这里插入图片描述

选择Windows Console Application (C++/WinRT),点击下一步

在这里插入图片描述

输入名程lvgl_v9_sim,选择目录,勾选将解决方案和项目放在同一目录中,点击创建,再点击确定

在这里插入图片描述

在工程目录中新建一个文件夹并命名为lvgl_folder

在这里插入图片描述

将下载的lv_drivers,lvgl两个文件夹复制到lvgl_folder文件中

在这里插入图片描述

将lv_drivers中的lv_drv_conf_template.h和lvgl中的lv_conf_template.h的文件复制到lvgl_folder目录下,并分别命名为lv_drv_conf.h和lv_conf.h

在这里插入图片描述

在工程中分别创建lvgl,lvgl_drivers两个筛选器

在这里插入图片描述
在这里插入图片描述

将lvgl_folder文件夹中的文件分别加入到工程

在这里插入图片描述
在这里插入图片描述

点击显示所有文件,包含添加的文件在项目中

在这里插入图片描述

将lv_drv_conf.h文件中的条件编译总开关打开

  • #if 0改成#if 1
#if 1 /*Set it to "1" to enable the content*/
  • 将USE_WIN32DRV宏设为1
/*----------------------------
 *  Native Windows (win32drv)
 *---------------------------*/
#ifndef USE_WIN32DRV
#  define USE_WIN32DRV       1
#endif

#if USE_WIN32DRV
/* Scale window by this factor (useful when simulating small screens) */
#  define WIN32DRV_MONITOR_ZOOM        1
#endif

将lv_conf.h中的文件配置如下

  • 编译总开关由#if 0改成#if 1
#if 1 /*Set it to "1" to enable content*/
  • LV_MEM_SIZE宏定义为(1024U * 1024U)
 /*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/
    #define LV_MEM_SIZE (1024U * 1024U)          /*[bytes]*/
  • LV_TICK_CUSTOM宏设为1,定义windos.h文件,定义时间函数GetTickCount()
/*Use a custom tick source that tells the elapsed time in milliseconds.
 *It removes the need to manually update the tick with `lv_tick_inc()`)*/
#define LV_TICK_CUSTOM 1
#if LV_TICK_CUSTOM
    #define LV_TICK_CUSTOM_INCLUDE <Windows.h>          /*Header for the system time function*/
    #define LV_TICK_CUSTOM_SYS_TIME_EXPR (GetTickCount())    /*Expression evaluating to current system time in ms*/
#endif   /*LV_TICK_CUSTOM*/
  • 将宏LV_USE_LOG设为1

/*Enable the log module*/
#define LV_USE_LOG 1
  • 将LV_USE_PERF_MONITOR和LV_USE_MEM_MONITOR设为1

/*1: Show CPU usage and FPS count*/
#define LV_USE_PERF_MONITOR 1
#if LV_USE_PERF_MONITOR
    #define LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT
#endif

/*1: Show the used memory and the memory fragmentation
 * Requires LV_MEM_CUSTOM = 0*/
#define LV_USE_MEM_MONITOR 1
#if LV_USE_MEM_MONITOR
    #define LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_LEFT
#endif
  • 将LV_FONT_MONTSERRAT_12和LV_FONT_MONTSERRAT_16设为1
/*Montserrat fonts with ASCII range and some symbols using bpp = 4
 *https://fonts.google.com/specimen/Montserrat*/
#define LV_FONT_MONTSERRAT_8  0
#define LV_FONT_MONTSERRAT_10 0
#define LV_FONT_MONTSERRAT_12 1
#define LV_FONT_MONTSERRAT_14 1
#define LV_FONT_MONTSERRAT_16 1
#define LV_FONT_MONTSERRAT_18 0
#define LV_FONT_MONTSERRAT_20 0
#define LV_FONT_MONTSERRAT_22 0
#define LV_FONT_MONTSERRAT_24 0
#define LV_FONT_MONTSERRAT_26 0
#define LV_FONT_MONTSERRAT_28 0
#define LV_FONT_MONTSERRAT_30 0
#define LV_FONT_MONTSERRAT_32 0
#define LV_FONT_MONTSERRAT_34 0
#define LV_FONT_MONTSERRAT_36 0
#define LV_FONT_MONTSERRAT_38 0
#define LV_FONT_MONTSERRAT_40 0
#define LV_FONT_MONTSERRAT_42 0
#define LV_FONT_MONTSERRAT_44 0
#define LV_FONT_MONTSERRAT_46 0
#define LV_FONT_MONTSERRAT_48 0
  • 在lv_config.h中将demo相关例程宏设为1

/*==================
* EXAMPLES
*==================*/

/*Enable the examples to be built with the library*/
#define LV_BUILD_EXAMPLES 1

/*===================
 * DEMO USAGE
 ====================*/

/*Show some widget. It might be required to increase `LV_MEM_SIZE` */
#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
#if LV_USE_DEMO_BENCHMARK
    /*Use RGB565A8 images with 16 bit color depth instead of ARGB8565*/
    #define LV_DEMO_BENCHMARK_RGB565A8 0
#endif

/*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    0
    #define LV_DEMO_MUSIC_LANDSCAPE 0
    #define LV_DEMO_MUSIC_ROUND     0
    #define LV_DEMO_MUSIC_LARGE     0
    #define LV_DEMO_MUSIC_AUTO_PLAY 0
#endif

/*Flex layout demo*/
#define LV_USE_DEMO_FLEX_LAYOUT 0

点击项目菜单,点击属性

在这里插入图片描述

点击C/C++,选择常规,在附加包含目录中加入lvgl_folder,点击应用

在这里插入图片描述
在这里插入图片描述

在main.cpp中换成以下内容,并将main.cpp文件重命名为main.c

#include "lvgl/lvgl.h"
#include "lvgl/demos/music/lv_demo_music.h"
#include "lv_drivers/win32drv/win32drv.h"

#define IDI_LVGL                       101

int main()
{
    lv_init();

    if (!lv_win32_init(
        GetModuleHandleW(NULL),
        SW_SHOW,
        800,
        480,
        LoadIconW(GetModuleHandleW(NULL), MAKEINTRESOURCE(IDI_LVGL))))
    {
        return -1;
    }

    lv_win32_add_all_input_devices_to_group(NULL);

    lv_demo_music();
  

    while (!lv_win32_quit_signal)
    {
        lv_task_handler();
        Sleep(1);
    }
    return 0;
}


将C/C++中预编译头,选择不使用预编译头

在这里插入图片描述

在C++预处理器中新增加如下内容

在这里插入图片描述

在链接器,输入,附加依赖项加入以下内容

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib

在这里插入图片描述

编译运行,运行结果如下

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据类型。

数据类型分为简单数据类型&#xff08;值类型&#xff09;和复杂数据类型&#xff08;引用类型&#xff09;值类型&#xff1a;在存储时变量中存储的是值本身&#xff08;string、number、boolean、undefined、null&#xff08;null特殊&#xff0c;返回一个空的对象 object&am…

2023年第十三届MathorCup高校数学建模挑战赛|A题|量子计算机在信用评分卡组合优化中的应用

目录 题目详情 最终收入 贷款利息收入 &#xff0d; 坏账损失 赛题说明 1&#xff1a;流程简化及示例 赛题说明 2&#xff1a;QUBO 模型简介 赛题说明 3&#xff1a;赛题数据 问题​ 题目详情 在银行信用卡或相关的贷款等业务中&#xff0c;对客户授信之前&#xff0c;需…

mycat2安装配置,分库分表,一库多表

1、官网下载&#xff08;官网下载地址&#xff09; 官网下载地址 Index of /2.0/ 下载模板 下载jdk包 下载好后吧jdk包房到mycat的lib目录下 2、配置启动 配置结构 mycat配置文件夹 clusters- prototype.cluster.json //无集群的时候自动创建- c0.cluster.json- c1.cluster…

jupyter notebook笔记 visualpython

通过界面拖拽生成Python代码 0 安装 pip install visualpythonvisualpy install 出现橙色按钮即为成功 1 主界面 2 logic 一些简单的逻辑运算 以class 为例&#xff1a; 3 Data Analysis 3.1 import 3.2 File&#xff08;数据集&#xff09; 3.2.1 读本地文件 3.2.2 写…

【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

基于深度学习的农作物叶片病害检测系统(UI界面+YOLOv5+训练数据集)

摘要&#xff1a;农作物叶片病害检测系统用于智能检测常见农作物叶片病害情况&#xff0c;自动化标注、记录和保存病害位置和类型&#xff0c;辅助作物病害防治以增加产值。本文详细介绍基于YOLOv5深度学习模型的农作物叶片病害检测系统&#xff0c;在介绍算法原理的同时&#…

能够翻译文档的免费软件-免费翻译整个文档的软件

chatgpt怎么实现批量翻译 ChatGPT是一种基于人工智能技术的自然语言处理软件&#xff0c;可以实现快速、准确的批量翻译操作&#xff0c;同时也支持多种语言翻译。下面是 ChatGPT 的批量翻译操作流程&#xff1a; 步骤 1: 确定翻译语言和翻译文本 首先需要确定要翻译的原文本…

套接字通信基础

套接字通信基础概述套接字通信基础套接字类型socket模型创建流程分析套接字创建socket()套接字绑定bind()套接字监听listen()套接字接受连接请求accept套接字连接套接字数据传输套接字通信实例服务器端代码客户端代码应用场景总结概述 套接字通信是在Linux系统中实现进程间通信…

WinForms 网格控件 - iGrid.NET 10.1.22 Crack

WinForms 网格控件 - iGrid.NET WinForms 的 10Tec 网格介绍 iGrid.NET 是适用于 Windows Forms 平台的多功能WinForms 网格控件&#xff0c;它是 Microsoft .NET Framework 和 .NET Core 的一部分。软件开发人员使用 iGrid for WinForms 来构建高度可调整的表格界面。它速度…

【MATLAB图像处理实用案例详解(10)】——基于Kalman滤波的目标跟踪预测红色小球位置

目录一、Kalman滤波二、Kalman滤波源程序三、Kalman滤波预测红色小球位置程序实现一、Kalman滤波 Kalman 滤波算法是一个最优化自回归数据处理算法&#xff0c;对于很多问题的解決&#xff0c;它是最优、效率最高甚至是最有用的。Kalman 滤波的广泛应用己经超过30年&#xff0…

LeetCode-120. 三角形最小路径和

目录题目思路动态规划(由上到下)动态规划(由下到上)题目来源 120. 三角形最小路径和 题目思路 由上往下 动态规划(由上到下) 1.确定dp数组以及下标的含义 dp[i][j] 表示从点 (i,j)) 到底边的最小路径和。 2.确定递推公式 常规&#xff1a; triangle[i][j]一定会经过tri…

SQL语句性能分析

1. 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候&#xff0c;该如何思考呢&#xff1f;这里把思考的流程整理成下面这张图。 整个流程划分成了 观察&#xff08;Show status&#xff09; 和 行动&#xff08;Action&#xff09; 两个部分。字母 S 的部分代表观察&…

连续可调稳压升压电源模块12v转12kv 24v转15kv 12v转5000v

GRB系列高压电源模块是一款工业级高性能微型DC/DC电源模块&#xff0c;是目前全球实 现输出连续可调稳压1000-15000V的超小体积的高压电源模块。具有体积小、功 耗低、响应快、输出纹波低、输出稳定度高、输出电压宽范围可调、自带过流保 护等优点&#xff0c;是一款专门为工业…

uniapp 之 小球根据当前时间 显示位置

目录 效果图 前言 总代码 1. template 代码 2. script 代码 3. js文件 4.样式 注解 1.小球运动代码 2. picker 时间选择器 补充 效果图 前言 最里面的是一张图片&#xff0c;并不是手写的样式&#xff0c; 总代码 1. template 代码 <uni-popup ref"appointm…

一图看懂 stat 模块:解析 stat() 结果, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 [TOC](一图看懂 stat 模块&#xff1a;解析 stat() 结果, 资料整理笔记&#xff08;大全&#xff09;) 摘要 全文介绍系统内置 stat 模块、函数、类及类的方法和属性。 它通过代码抓…

通过自动化和条形码优化供应链

Welch Allyn是全球领先的医疗诊断设备制造商&#xff0c;开发了数百种突破性产品和技术&#xff0c;使一线从业者能够提供卓越的患者护理。它在26个不同的国家拥有近2&#xff0c;500名员工。 一、面临的挑战提高运营效率 原因&#xff1a;用户需要长途跋涉并浏览多个数据条目以…

HCIA第一次笔记

目录 网络基础 扩大网络的两种途径 1.增加网络节点——集线器(HUB) 2.增大传输距离——中继器(放大器) 解决网络问题——网桥、交换机(二层设备) 交换机——读和重写的操作 解决洪泛——路由器(三层设备) 区分是否在同一个洪泛范围——IP(Internet Protocol)地址 ARP协…

redis缓存穿透、案例

1、缓存穿透是什么 缓存穿透是指查询一个一定不存在的数据&#xff0c;由于缓存是不命中时需要从数据库查询&#xff0c;查不到数据则不写入缓存&#xff0c;这将导致这个不存在的数据每次请求都要到数据库去查询&#xff0c;进而给数据库带来压力。 其实&#xff1a;就是黑客…

多线程冲突处理方法,锁

线程之间是可以共享进程的资源&#xff0c;比如代码段、堆空间、数据段、打开的文件等资源&#xff0c;但每个线程都有自己独立的栈空间。 那么问题就来了&#xff0c;多个线程如果竞争共享资源&#xff0c;如果不采取有效的措施&#xff0c;则会造成共享数据的混乱。 我们做…

STM32+收发器实现CAN和485总线

RS485总线是一种常见的(Recommended Standard)串行总线标准(485是它的标识号)&#xff0c;采用平衡发送与差分接收的方式&#xff0c;因此具有抑制共模干扰的能力。CAN是控制器局域网络(Controller Area Network, CAN)的简称&#xff0c;是一种能够实现分布式实时控制的串行通信…