当前位置: 首页 > news >正文

lvgl的应用:移植MusicPlayer(基于STM32F407)

目录

概述

1 软硬件环境

1.1 UI开发版本

 1.2 MCU开发环境

1.3 注意点

2  GUI Guider开发UI

2.1 使用GUI Guider创建UI

2.2 GUI Guider编译项目和测试

2.2.1 GUI Guider编译项目

2.2.2 编译

2.3  了解GUI Guider生成代码

3  移植项目

3.1 Keil中加载代码

3.2 调用GUI接口

4 编译项目

5 运行代码 


源代码下载地址:

stm32-f407-lcd-lvgl-proj-MusicPlayer资源-CSDN文库

lvgl-demo-MusicPlayer资源-CSDN文库

概述

本文主要介绍使用GUI Guider工具创建一个MusicPlayer的应用程序,并且该程序在GUI Guider上模拟UI的功能,然后将GUI Guider生成的代码移植到基于STM32F407主控MCU的控制板卡上。并测试了UI的功能。

1 软硬件环境

1.1 UI开发版本

软件信息版本信息
MinGW-w64MinGW-W64 GCC-8.1.0
Simple Directmedia Layer(SDL)V2.30.3
CMake3.30.0-rc2
LVGLV8.4.0
GUI Guider1.7.2

 1.2 MCU开发环境

软硬件信息版本信息
STM32 MCUSTM32F407IGTx
KeilMDK ARM 5.38
STM32CubeMXV6.8.1
调试工具:st-linkST-LINK/V2-1

1.3 注意点

在使用GUI Guider开发UI之前,必须保证lvgl库已经移植完成,并且该库相关的UI能正常工作。相关移植的文档可参看:

基于STM32移植lvgl(V8.2)(SPI接口的LCD)_lvgl lcd-CSDN博客

2  GUI Guider开发UI

2.1 使用GUI Guider创建UI

1) 创建Project

打开GUI Guider,创建项目,选择应用模版,这里选择MusicPlarer,并选择LCD的屏幕大小,笔者使用480X320大小尺寸。

2)设置项目路径和工程名称

3)完成以上配置后,点击下一步完成创建项目步骤,此时可以预览UI

2.2 GUI Guider编译项目和测试

2.2.1 GUI Guider编译项目

点击代码编译,可以看见GUI Guider生成的和项目UI相关的代码,其中最重要的两个目录,分别为:

Custom目录: 包括UI Steup函数、事件相关操作函数

Generate目录:UI相关的数据,包括各个Pannel使用的图片数据、字体数据、页面项目的接口等。

2.2.2 编译

1) 生成代码

出现如下信息,说明生成代码已经完成

2)生成代码后,就可以进行编译

 3)编译代码完成后,系统会生成一个.exe文件。系统此时会自动运行该文件

完成以上步骤,说明生成的代码可以正常工作,此时就可以准备接下来的移植工作。

2.3  了解GUI Guider生成代码

点击工程目录进行到代码目录中

重点关注custom和generate目录

 在custom目录下生成和UI逻辑关系处理相关的代码

  在generate目录下生成和UI数据关系处理相关的代码

3  移植项目

3.1 Keil中加载代码

在lvgl_project下创建GUI目录,然后将如下两个目录从GUI Guider中copy到GUI目录中。

 1)将custom目录和generate目录中的.c文件全部添加到GUI目录中。

 2)配置项目路径

 3)添加代码后的系统架构

3.2 调用GUI接口

在项目中添加一个User/test目录,编写调用代码

代码5~7行: 添加UI相关的头文件

代码9行: 创建UI对象

代码12行:setup UI,此时相关UI的页面已经被创建出来

代码13行:初始化用户自定义UI,包括创建事件函数

4 编译项目

编写完成调用代码后,此时就可以编译程序,然后下载代码到板卡中。

根据编译信息可知:

此项目需要消耗520K左右的Flash空间,所以必须保证MCU有足够多的空间烧写数据。

Build started: Project: stm32_f407_lcd_proj
*** Using Compiler 'V5.05 update 1 (build 106)', folder: 'd:\Keil_v5\ARM\ARMCC\Bin'
Build target 'stm32_f407_lcd_proj'
compiling lv_mainstart.c...
linking...
Program Size: Code=189488 RO-data=318372 RW-data=816 ZI-data=75480  
FromELF: creating hex file...
"..\..\..\build\stm32_f407_lcd_lvgl_proj\stm32_f407_lcd_proj.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:06

5 运行代码 

播放歌曲页面

 切换歌曲页面

 播放新的歌曲页面

相关文章:

lvgl的应用:移植MusicPlayer(基于STM32F407)

目录 概述 1 软硬件环境 1.1 UI开发版本 1.2 MCU开发环境 1.3 注意点 2 GUI Guider开发UI 2.1 使用GUI Guider创建UI 2.2 GUI Guider编译项目和测试 2.2.1 GUI Guider编译项目 2.2.2 编译 2.3 了解GUI Guider生成代码 3 移植项目 3.1 Keil中加载代码 3.2 调用G…...

Hadoop3:MapReduce中的Shuffle机制

一、流程图 Shuffle是Map方法之后,Reduce方法之前的数据处理过程称。 二、图解说明 1、数据流向 map方法中context.write(outK, outV);开始,写入环形缓冲区,再进行分区排序,写到磁盘 reduce方法拉取磁盘上的数据,…...

从设计到实践:高速公路监控技术架构全剖析

随着高速公路网络的迅速扩展和交通流量的日益增加,高效的监控系统成为保障交通安全、提升管理效率的重要手段。本文将深入探讨高速公路监控技术架构,从设计理念到实际应用,全面解析这一关键技术的各个环节。 ### 一、系统设计理念 #### 1. 高…...

Go Context

Context 介绍 Context 代表了协程的上下文,用以在父子协程之间传递控制信号,共享变量等操作// context.Context 接口 type Context interface {// 当Context自动取消或者到了取消时间被取消后返回Deadline() (deadline time.Time, ok bool)// 当Contex…...

centOS Stream9配置NAT8网络

首先将VMware关机,添加网络适配器 启动虚拟机,查看ens192是否打开连接 安装的图形化需要查看右上角电源处网卡是否连接 最小化安装一般不会出现未连接的状态 使用ip a 查看 配置网卡文件 cd /etc/NetworkManager/system-connections/cd到当前目录下…...

Linux - 进程

一、什么是进程 首先,Linux是一个多用户多进程的操作系统,系统上可以同时运行多个进程。 进程的产生:①是在执行程序或者命令时产生的;②定时任务进程 进程的类型:前台进程/后台进程 前台进程:一个终端…...

nginx+tomcat负载均衡、动静分离群集【☆☆☆☆☆】

Nginx是一款非常优秀的HTTP服务器软件,性能比tomcat更优秀,它支持高达50 000个并发连接数,拥有强大的静态资源处理能力,运行稳定,内存、CPU等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的…...

MySQL容器部署步骤

1、拉取MySQL镜像 docker pull mysql # 默认拉取最新版本docker pull mysql:5.7 # 拉取5.7版本docker pull mysql:8.0 # 拉取8.0版本 2、创建挂载目录 # 创建挂载目录 mkdir -p /home/mysql/conf/ # -p: 多级创建mkdir -p /home/mysql/log/mkdir -p /home/mysql/data/ 3…...

在 Ubuntu 18.04.4 LTS上安装 netmap

文章目录 步骤运行配置文件编译安装使用netmap 步骤 sudo su sudo apt-get update sudo apt install build-essential sudo apt-get install -y git sudo apt-get install -y linux-headers-$(uname -r)rootVM-20-6-ubuntu:/home/ubuntu/netmap/LINUX# git clone https://gith…...

spark 整合 yarn

spark 整合 yarn 1、在master节点上停止spark集群 cd /usr/local/soft/spark-2.4.5/sbin ./stop-all.sh 2、spark整合yarn只需要在一个节点整合, 可以删除node1 和node2中所有的spark文件 分别在node1、node2 的/usr/local/soft目录运行 rm -rf spark-2.4.…...

蓝桥杯十五届国赛模拟题1答案

1、bug缺陷报告 功能名称缺陷描述操作步骤预期结果实际结果缺陷级别销售订单列表...

分布式之日志系统平台ELK

ELK解决了什么问题 我们开发完成后发布到线上的项目出现问题时(中小型公司),我们可能需要获取服务器中的日志文件进行定位分析问题。但在规模较大或者更加复杂的分布式场景下就显得力不从心。因此急需通过集中化的日志管理,将所有服务器上的日志进行收集汇总。所以ELK应运而生…...

git常见错误

refusing to merge unrelated histories 如果git merge合并的时候出现refusing to merge unrelated histories的错误,原因是两个仓库不同而导致的,需要在后面加上--allow-unrelated-histories进行允许合并,即可解决问题。 git push origin …...

构建稳定高效的消息传递中间件:消息队列系统的设计与实现

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 目录 一、引言 二、设计目标 2.1、高可用性 1. 集群搭建 1.1 …...

支持 MKV、MP4、AVI、MPG 等格式视频转码器

一、简介 1、一款开源的视频转码器,适用于 Linux、Mac 和 Windows。它是一个免费的工具,由志愿者们开发,可以将几乎所有格式的视频转换为现代、广泛支持的编码格式。你可以在官网上下载该应用或源代码。该软件支持 MKV、MP4、AVI、MPG 等格式…...

yum

文章目录 本地源配置本地yum源仓库yum常用的操作命令 网络源阿里云当yum 安装源代码软件包需要编译安装,需要安装支持c和c程序语言的编译器,如gcc、gcc-c、make 如果使用rpm方式安装,则需要先安装多个依赖包,这样会很繁琐。可以使…...

【单片机毕业设计选题24016】-基于STM32和阿里云的采空区环境监测系统设计

系统功能: 系统分为主机端和从机端,主机端主动向从机端发送信息和命令,从机端 收到主机端的信息后回复温度,甲烷,一氧化碳,氧气和系统状态等信息。 同时主机端将这些信息上传至阿里云服务器。 主要功能模块原理图: 电源时钟烧…...

Leetcode3179. K 秒后第 N 个元素的值

Every day a Leetcode 题目来源:3179. K 秒后第 N 个元素的值 解法1:模拟 模拟 k 轮,数组保存上一次结果,然后计算当前轮次的结果。 代码: /** lc appleetcode.cn id3179 langcpp** [3179] K 秒后第 N 个元素的值…...

vue3第二阶段的开发文档

1 2.1 案例——学习计划表 2.1.1 准备工作 在开发“学习计划表”案例之前,需要先完成一些准备工作,具体步骤如下。 ① 打开命令提示符,切换到 D:\vue\chapter02 目录,在该目录下执行如下命令,创建 项目。 np…...

【网络安全学习】漏洞扫描:- 02- nmap漏洞扫描

1.nmap的介绍 Nmap是一款功能强大的网络探测和安全扫描工具,可以对目标进行端口扫描、服务探测、操作系统指纹识别等操作。 Nmap自带了许多内置的NSE脚本,它们可以根据不同的目标和场景来执行不同的功能。这些脚本存放在Nmap安装目录**/usr/share/nmap…...

【PostgreSQL】生态工具箱:从核心插件到企业级扩展的实战指南

1. PostgreSQL生态工具箱全景图 第一次接触PostgreSQL时,很多人会惊讶于它丰富的扩展生态。就像一位老木匠的工具箱,PostgreSQL提供了从螺丝刀到电锯的全套工具。我在实际项目中最深刻的体会是:选对工具比盲目编码更重要。比如曾经有个项目需…...

ComfyUI自定义节点开发指南:从零构建你的专属AI工具链

1. 为什么需要自定义ComfyUI节点? 第一次用ComfyUI做AI绘画时,我就被它灵活的节点式操作吸引了。但用着用着发现一个问题:官方提供的节点虽然强大,但总有些特殊需求无法满足。比如想给生成的图片自动打水印、批量处理文件夹里的图…...

手把手教学:用LongCat动物百变秀快速生成动物拟人化表情包和头像

手把手教学:用LongCat动物百变秀快速生成动物拟人化表情包和头像 1. 为什么选择LongCat动物百变秀 在当今社交媒体时代,个性化的动物表情包和头像已经成为网络交流的重要组成部分。LongCat动物百变秀是一款基于美团开源模型的本地化AI图像编辑工具&…...

汽车线控转向系统动力学法Carsim和Simulink联合仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

ESFT-gate-summary-lite:AI快速提炼文本关键信息

ESFT-gate-summary-lite:AI快速提炼文本关键信息 【免费下载链接】ESFT-gate-summary-lite ESFT-gate-summary-lite模型,基于DeepSeek-ai的开源项目,专注于提升基础模型摘要能力。源自ESFT-vanilla-lite,强化文本摘要,…...

云原生实战:如何用GROUP模型提升容器工作负载预测准确率(附避坑指南)

云原生实战:如何用GROUP模型提升容器工作负载预测准确率(附避坑指南) 在云原生架构中,容器资源管理一直是DevOps团队面临的重大挑战。传统单容器预测方法往往忽视了微服务间复杂的协同关系,导致预测误差居高不下。本文…...

AI编程实战:如何用Cursor和Coze在1小时内完成文生图小程序开发

AI编程实战:如何用Cursor和Coze在1小时内完成文生图小程序开发 当产品灵感突然闪现,如何在最短时间内将它变成可交互的原型?传统开发流程中,从UI设计到API对接至少需要数天时间。而现在,借助AI编程工具链,我…...

别再让收款语音卡顿!UniApp + WebSocket 实现流畅支付播报的完整避坑指南

UniApp WebSocket 支付语音播报实战:从性能优化到高并发处理 在移动支付场景中,实时语音播报不仅是用户体验的关键环节,更是商户经营效率的重要保障。想象这样的场景:高峰时段,收银台前排队等待的顾客,收银…...

Abaqus数值模拟案例研究:随机纤维分布二维RVE模型中的微观横向拉伸损伤与延性损伤评估

abaqus数值模拟案例系列-随机纤维分布二维RVE模型微观横向拉伸损伤,设置了周期边界,采用Drucker-Prager(dp)准则,Ductile-Damage延性损伤,界面采用cohesive单元,采用牵引分离方法,Qu…...

从图像分割到GAN生成:转置卷积(Transpose Conv)的两种实战配置与调参心得

转置卷积实战指南:图像分割与GAN生成中的核心技巧 在计算机视觉领域,我们常常需要将低分辨率特征图恢复到原始尺寸——无论是为了像素级预测的图像分割任务,还是从潜在空间生成逼真图像的GAN模型。传统插值方法如双线性插值虽然简单&#xff…...