【LVGL快速入门(二)】LVGL开源框架入门教程之框架使用(UI界面设计)

news2024/12/23 16:33:10

零.前置篇章

本篇前置文章为【LVGL快速入门(一)】LVGL开源框架入门教程之框架移植

一.UI设计

        介绍使用之前,我们要学习一款LVGL官方的UI设计工具SquareLine Studio,使用图形化设计方式设计出我们想要的界面,然后生成对应源文件导入工程使用。

详情参考这篇文章:【学习笔记】SquareLine Studio安装教程(LVGL官方工具)-CSDN博客

         另一种非官方工具Gui Guider(恩智浦开发)也可以进行UI设计:

Gui Guider官方下载地址:

 个人比较喜欢恩智浦这个工具,界面看着更简洁,而且免费。

二.简单测试

        在while前添加以下代码来简单测试是否移植成功:

    // 按钮
    lv_obj_t *myBtn = lv_btn_create(lv_scr_act());                               // 创建按钮; 父对象:当前活动屏幕
    lv_obj_set_pos(myBtn, 10, 10);                                               // 设置坐标
    lv_obj_set_size(myBtn, 120, 50);                                             // 设置大小
   
    // 按钮上的文本
    lv_obj_t *label_btn = lv_label_create(myBtn);                                // 创建文本标签,父对象:上面的btn按钮
    lv_obj_align(label_btn, LV_ALIGN_CENTER, 0, 0);                              // 对齐于:父对象
    lv_label_set_text(label_btn, "Test");                                        // 设置标签的文本
 
    // 独立的标签
    lv_obj_t *myLabel = lv_label_create(lv_scr_act());                           // 创建文本标签; 父对象:当前活动屏幕
    lv_label_set_text(myLabel, "Hello world!");                                  // 设置标签的文本
    lv_obj_align(myLabel, LV_ALIGN_CENTER, 0, 0);                                // 对齐于:父对象
    lv_obj_align_to(myBtn, myLabel, LV_ALIGN_OUT_TOP_MID, 0, -20);               // 对齐于:某对象

 可以看到一个Test按钮以及Hello world!

遇到错误或者奇怪的现象可以参考:LCD典型问题及解决方案_hx8399c-CSDN博客 

三.正式开发

        这里笔者使用GUI Guider来做演示。

1.创建工程

        Create a new project来创建新工程:

貌似只适配8.3的 框架,next下一步:

选择设备模拟器为模板: 

选择空工程:

根据自己的屏幕选择尺寸,以及自命名工程和保存路径:

单击Create即可创建成功:

2.设计界面

依次单击以下图标可以呼出组件界面:

先添加一个容器覆盖我们的界面:

组件中选择图片,然后导入几张图片:

修缮一下: 

选择标签,加点文字:

3.运行测试

点击右上角的三角运行无误后,即可开始移植

4.移植代码

将代码导出至指定路径:

打开我们移植好LVGL的STM32的工程以及工程文件夹,在LVGL文件夹中创建一个guider文件夹,将guider生成的源码src文件夹全部放入(删除生成的main.c):

 

工程管理中创建组并添加文件:

魔术棒中添加头文件路径:

打开GUI Guider导出的main.c文件,将main.c中的头文件加入到我们自己工程的头文件中:

//Guider
#include "../generated/gui_guider.h"
#include "../generated/events_init.h"

在main.c主函数上方添加全局变量:

lv_ui guider_ui;

在主函数中调用(LVGL框架初始化之后):

setup_ui(&guider_ui);
events_init(&guider_ui);

编译成功即可。

5.错误解决方案

以下是笔者移植时遇到的错误总结:

1.error:#8:missing closing quote

这个错误主要由编码错误引起,在魔术棒->C/C++->Misc Controls中添加:--locale=english

后即可解决

2.画面倒置

烧入成功后发现画面是旋转的或者倒置的话,可以使用LVGL自带的属性进行修改旋转

打开lv_port_disp.c这个文件,找到void lv_port_disp_init(void)这个函数

lv_disp_drv_register(&disp_drv);前添加堆属性的修改即可

disp_drv.sw_rotate = 1;
disp_drv.rotated = LV_DISP_ROT_90;

这两句是开启旋转并旋转90度,其他宏如:

LV_DISP_ROT_NONELV_DISP_ROT_90LV_DISP_ROT_180,  LV_DISP_ROT_270 

分别可旋转不同的角度

四.移植成功

        哈哈很浪漫的啊!

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

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

相关文章

C++初阶学习第七弹——string的模拟实现

C初阶学习第六弹------标准库中的string类_c语言返回string-CSDN博客 通过上篇我们已经学习到了string类的基本使用,这里我们就试着模拟实现一些,我们主要实现一些常用到的函数。 目录 一、string类的构造 二、string类的拷贝构造 三、string类的析构函…

基于SpringBoot的智能餐厅点餐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

每日一练:不同的二叉搜索树

96. 不同的二叉搜索树 - 力扣(LeetCode) 题目要求: 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入&#xff1a…

PAT甲级-1003 Emergency

题目 题目大意 给出n个城市的连通图,其中共有m条边,起点为C1,终点为C2。每个城市都有一定数目的救援队,现从C1出发,每经过一个城市,都可以加上这个城市的救援队。要求从C1到C2最短路径的个数,并…

AIGC技术的学习 系列一

文章目录 前言一、AIGC技术演进1.1 图像视频生成1.2. 文本生成1.3. 多模态生成1.4. 小结二、CAD&CAE软件介绍2.1. CAD软件2.2. CAE软件2.3. 小结三、AIGC技术与CAD&CAE软件的集成案例3.1. 土建设计领域3.2. 机械设计领域四、结语五、参考文献总结前言 在全球智能制造的…

FreeRTOS - 信号量

在学习FreeRTOS过程中,结合韦东山-FreeRTOS手册和视频、野火-FreeRTOS内核实现与应用开发、及网上查找的其他资源,整理了该篇文章。如有内容理解不正确之处,欢迎大家指出,共同进步。 队列用于传输数据:在任务之间、任务…

冻干咖啡市场洞察:销售额占比背后的消费密码

冻干咖啡销售额前十占比分析 一、概述 本报告基于从淘宝商品搜索接口和淘宝精确月销量接口中提取的数据,分析了前十个品牌在销售额上的占比情况。分析涵盖了销售额和占比的数据,为决策提供了依据。(数据获取时间:2024.09.20&…

音乐播放器项目专栏介绍​

1.简介 本专栏使用Qt QWidget作为显示界面,你将会学习到以下内容: 1.大量ui美化的实例。 2.各种复杂ui布局。 3.常见显示效果实现。 4.大量QSS实例。 5.Qt音频播放,音乐歌词文件加载,展示。 6.播放器界面换肤。 相信学习了本专栏…

C++【内存管理】(超详细讲解C++内存管理以及new与delete的使用和原理)

文章目录 1.C/C内存分布2.C语言中动态内存管理方式3.C内存管理方式3.1 new/delete操作内置类型3. 2new/delete操作自定义类型 4. operator new与operator delete函数(重点)5. new和delete的实现原理5.1 内置类型5.2 自定义类型5.2.1 自定义类型调用new[]…

【机器学习】特征降维|低方差过滤|主成分分析PCA|相关系数法|皮尔逊相关系数|斯皮尔曼相关系数

特征降维 特征降维 为什么要进行特征降维? 特征对训练模型非常重要,当用于训练的数据集包涵一些不重要的特征时,可能会导致模型泛化性能不加 eg:某些特征的取值较为接近,其包含的信息较少eg:希望特征独立存在对预测产生影响,两…

Unity使用TriangleNet参考

TriangleNet下载如下: TriangleNet 效果如下: 代码参考如下: using System.Collections.Generic; using UnityEngine; using TriangleNet.Geometry;public class TestTriangleNet : MonoBehaviour {[SerializeField]Material material;voi…

2024下半年,国内大模型六小虎最新发展情况怎么样了?

最近大模型圈有点冷,ChatGPT访问量下降,英伟达的股价都跟着跌,更是有人开始唱衰大模型。这感觉就像经历了一场盛夏酷暑后的骤然降温,资本市场也开始理性回归。但与此同时,国内的"六小虎"却展现出另一番景象——热火朝天!这真是冰火两重天啊! 在这看似矛盾的局…

CNStream流处理多路并发Pipeline框架相关问题整理:Pipeline整体流程、数据传输、多路并发

目录 1 CNStream之前博客汇总 1.1 Pipeline中的EventBus 1.2 Pipeline中的内存池 1.3 Pipeline中的视频解码流程分析 1.4 Pipeline中的视频编码流程分析 1.5 Pipeline中的反射机制 1.6 Pipeline中的单例模式代码 1.7 怎么将CNStream适配到NVIDIA Jetson Orin 2 构建Pi…

EI收录检索报告是什么样的?怎么出具?一文了解!

一、EI检索报告是什么 EI(Engineering Village)数据库是全球最全面的工程检索二次文献数据库,它收录了7,000,000多篇论文的参考文献和摘要。这些论文出自5,000多种工程类期刊、会议论文集和技术报告。EI收录的文献涵盖了所有的工程领域,其中大约22%为会…

聊聊零基础如何开始学习鸿蒙开发技术

鸿蒙系统是一款分布式操作系统,其适用范围非常广泛,从智能手机到家用电器,再到工业设备,都能找到应用场景。特别是在智能家居领域,鸿蒙系统可以实现不同设备之间的无缝连接和协同工作,提供更加智能和便利的…

建筑工程管理软件推荐,2024年最佳选择

建筑工程管理软件助力项目全周期管理,包括规划、监控、资源成本控制等。类型多样,选购需考虑需求匹配、便捷性、集成能力、灵活性和安全性。软件优化流程、提高效率、监控进展、优化资源配置、提升协作水平。 一、建筑工程管理软件到底是什么&#xff1f…

浮点数二进制制科学计数法理解

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 1. 引言 对于浮点数,主要是单精度-float、双精度-double两种类型。 对于浮点类型,我们知道其采用科学计数法,准确来说应该是二进制科学计数法。 为什么准确说是是二进制科学计数法&…

机器学习笔记20241017

文章目录 torchvisiondataloadernn.module卷积非线性激活模型选择训练误差泛化误差 正则化权重衰退的基本概念数学表示权重衰退的效果物理解释 数值稳定性(Gradient Vanishing)梯度消失原因解决方法 梯度爆炸(Gradient Explosion)…

linux anconda下基础环境配置(torch、opencv等)

1、torch安装(GPU) 下载链接:https://pytorch.org/ 根据配置下载对应版本,CUDA11.4 可用11.3下的安装包 conda install pytorch1.12.0 torchvision0.13.0 torchaudio0.12.0 cudatoolkit11.3 -c pytorch错误解决: 安…

好用的python相关的AI工具Bito介绍

插件名称:Bito 好用的python相关的AI工具Bito介绍 step 1:点插件step 2:搜索bito并安装step3 :需要登录,要有真实邮箱,按步骤走就行,完后就可以使用 step 1:点插件 step 2:搜索bito并安装 step3…