使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装

使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装

受限于每篇文章最多只能贴9张图的限制,这个教程被拆分成了多篇文章连载发布,完整目录结构如下图x所示。后续会发布完整教程的pdf文件,敬请期待。
在这里插入图片描述

图x 完整教程文档的目录

文章目录

  • 使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装
    • LVGL和GUI Guider简介
    • 准备带有显示屏的开发板
    • 在PC上安装GUI Guider

LVGL和GUI Guider简介

LVGL是一个开源免费(MIT许可)的嵌入式GUI组件(https://lvgl.io/),支持触摸屏操作,移植简单方便,开发者一直在不断完善更新。

LVGL的作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C语言编写,以实现最大的兼容性(与C ++兼容),模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计,同时LVGL作为一个图形库,它自带着接近三十多种小工具可以供开发者使用。这些强大的构建块按钮搭配上带有非常丝滑的动画以及可以做到平滑滚动的高级图形,同时兼具着不高的配置要求以及开源属性,显著的优势使得LVGL蔚然成风,成为广大开发者在选择GUI时的第一选择。

LVGL自带了丰富的控件:窗口、按键、标签、列表、图表等,还可以自定义控 件;支持很多特效:透明、阴影、自动显示隐藏滚动条、界面切换动画、图标打开关闭动画、平滑的拖拽控件、分层显示、反锯齿、仅耗少量内存的字体等等。

在这里插入图片描述

图x 在MCU开发板上适配LVGL

同LVGL应用场景类似的主流的嵌入式GUI组件还有emWin、TouchGFX等,相比较而言,LVGL对于开发者更加友好,对比典型指标如表x所示。

表x 主流嵌入式GUI的关键指标对比
LVGLemWinTouchGFX
商业使用免费收费收费
可移植性多平台多平台主要为STM32
开源程度源码开源不开源部分开源
组件丰富度三十几种控件二十几种控件丰富
开发文档较为丰富较为丰富一般

由于LVGL被广泛应用,也衍生了一些以LVGL为基础的开发工具,便于嵌入式系统开发者自定义自己的GUI应用。例如 GUI Guider、Square Line Studio、LVGL Windows Simulater等。其中:

  • Square Line Studio是LVGL官方开发工具,面向个人和专业人士的UI编辑器,可快速轻松地为您的嵌入式设备设计和开发漂亮的UI,便捷地设计界面并一键生成代码导出,导出的代码在模拟器和嵌入式设备上都适用,但该软件商业使用需要付费。
  • LVGL Windows Simulater是LVGL官方提供的轻量级的仿真器,使用 GNU GCC 编译器和 SDL 驱动库或 Windows API 在 PC 机上绘制界面,但需要用户自行编写源码设计UI。
  • 相对而言,GUI Guider开源,并且支持图形环境的设计和仿真功能,最具符合开发者全面需求。
表 x 常用LVGL模拟器的关键指标对比
GUI GuilderSquare Line StudioLVGL Windows Simulater
使用难度功能丰富,上手简单较为复杂功能一般
功能丰富度功能丰富功能丰富功能单一
可视化设计支持支持不支持
开发文档一般较为丰富一般
同步调试支持不支持支持

GUI Guider是恩智浦提供的用户友好型图形用户界面开发工具,可通过开源LVGL图形库快速开发高品质的显示。GUI Guider的拖放编辑器可以轻松利用LVGL的众多特性,如小部件、动画和样式来创建GUI,而只需少量代码或根本无需任何代码。单击按钮,您可以在模拟环境中运行应用或将其导出到目标项目。可以很轻松地将GUI Guider生成的代码添加到MCUXpresso IDE或IAR Embedded Workbench项目中,从而加速开发过程,并允许无缝地将嵌入式用户界面添加到应用中。

GUI Guider是NXP公司推出的一款用户友好的嵌入式图形应用开发工具。它使用开源LVGL图形库作为底层图形引擎,提供可视化所见即所得的拖放UI编辑器,能够快速、轻松地为嵌入式应用程序创建漂亮的图形用户界面。图形设计师能够直接使用GUI Guider创建UI,并将已经工作的UI交付给软件开发人员,而软件开发人员只需专注于底层业务逻辑开发。通过这种方式,GUI Guider可以支持个人或者团队高效地协同工作。GUI Guider的软件界面,如图x所示。
在这里插入图片描述

图x GUI Guider的软件界面

准备带有显示屏的开发板

本例使用基于国产灵动微电子“星辰”处理器内核系列的MCU产品,MM32F5270/MM32F5280,设计的开发板BIRD-F5,配合ST7796U的3.5寸TFT液晶显示屏模块。任何可以连接液晶显示模块的开发板均可用于开发LVGL,只要开发者预先适配好具体的液晶屏驱动,以及在具体开发板上做好LVGL工程的移植,后续开发图形界面的工作将全部在GUI Guider环境中进行开发,同具体的开发板和显示模块无关。

MM32F5270微控制器使用ArmChina的STAR-MC1处理器内核(基本兼容Arm Cortex-M33内核),最高主频可达120MHz,片内集成192KB的SRAM(128KB的SRAM、32KB的ITCM和32KB的DTCM)和256KB的Flash,以及包括FSMC在内的众多外设模块。MM32F5280在MM32F5270的基础之上,在QSPI接口上合封了一块2MB容量的qspiflash存储芯片。

在这里插入图片描述

图x BIRD-F5开发板

BIRD-F5开发板以MM32F5277E9PV为主控芯片,集成了FPC插座,可以组装TFT显示屏模块,将MM32F5270芯片上的FSMC接口同TFT液晶屏对接通信,如图x所示。

在这里插入图片描述

图x 组装TFT模块后的BIRD-F5开发板
  • MM32F5270微控制器的产品主页:https://www.mindmotion.com.cn/products/mm32mcu/mm32f/mm32f_performance/mm32f5270/

  • BIRD-F5开发板的KiCAD项目工程(包含原理图):https://gitee.com/suyong_yq/lvgl-gui-guider-dev/tree/master/bird-f5_lvgl_v8/hardware/bird-f5_v1.3

  • 灵动微电子官方发布的PLUS-F5270开发板的购买链接:https://item.taobao.com/item.htm?spm=a230r.1.14.1.664025d1Z2SRxb&id=675495302966

  • ST7796U TFT液晶模块购买链接:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.40ce2e8dBpnWJx&id=521624918530

在PC上安装GUI Guider

理想情况下,基于MCU的UI应用的开发,重点应该放在UI的设计上,而MCU相关的开发工作,只是为UI软件提供一个运行环境。如此,在本例中搭建的软件开发环境,也主要分为两个部分:搭建基于MCU的UI应用运行环境,搭建基于PC的UI应用开发环境。这里的准备工作,需要创建一个包含了能够支持GUI
Guider源码的MCU的源码工程,当在GUI
Guider中编辑好UI素材,对应生成的源码可以被直接集成到MCU工程中,编译并能够在具体的开发板上运行。

本例中搭建嵌入式GUI开发环境(基于Windows操作系统)需要安装如下软件工具包:

  • Keil MDK - MCU源码项目的编译和下载工具
  • 一个移植好LVGL的MCU源码工程,可以点亮液晶屏
  • GUI Guider - 基于PC机的生成UI源码的软件工具

登录NXP官网,在搜索栏中输入GUI Guider即可找到GUI Guider工具的软件包,目前可以运行在Windows、Linux和MacOS等多种操作系统。

也可直接进入GUI Guider的产品主页:https://www.nxp.com/design/software/development-software/gui-guider:GUI-GUIDER

在这里插入图片描述

图x GUI Guider的产品主页

从GUI Guider的产品主页上,可以获取GUI Guider软件的下载链接,例如:https://cache.nxp.com.cn/secured/bsps/Gui-Guider-Setup-1.5.1-GA.exe

运行GUI Guider需要配置JDK,如果本机上没有JDK,启动GUI Guider后会有提示。如图x所示。

在这里插入图片描述

图x GUI Guider提示安装JDK

可以使用开源的OpenJDK即可。OpenJDK的下载地址:https://learn.microsoft.com/zh-cn/java/openjdk/download。

在安装OpenJDK的过程中,切记要将JDK的可执行文件的路径添加到开发主机系统的环境变量中。如图x所示。安装OpenJDK的最后步骤中,可能也有自动添加系统环境变量的操作选项,也可勾选其中,自动完成添加。

在这里插入图片描述

图x 配置JDK路径到系统环境变量

安装GUI Guider和OpenJDK完毕后,运行GUI Guider软件,可以进入图形UI编辑界面。如图x所示。
在这里插入图片描述

图x 启动GUI Guider软件

(未完待续。。。)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 基础(五)常用命令-文件属性

文件属性 文件权限文件属性修改文件权限属性 文件所有者 文件权限 文件属性 Linux中文件权限 可以通过文件属性体现; 使用 ll 查看文件列表 最前面的 l d 表示文件类型 1 5 表示硬链接数 或者 子文件夹个数 所属用户 所属用户组 文件大小 创建/更新时间 文件&…

ComponentOne Studio ASP.NET MVC Crack

ComponentOne Studio ASP.NET MVC Crack FlexReport增强功能 添加了对在Microsoft Windows上部署Microsoft Azure的支持。 添加了对显示嵌入字体的支持。 .NET标准版的经典C1PDF(Beta版) GrapeCity的经典C1Pdf库现在提供了基于Microsoft.NET标准的版本。在任何.NET应用程序(包括…

numba 入门示例

一维向量求和: C A B 在有nv 近几年gpu的ubuntu 机器上, 环境预备: conda create -name numba_cuda_python3.10 python3.10 conda activate numba_cuda_python3.10conda install numba conda install cudatoolkit conda install -c nvi…

【Redis实践篇】使用Redisson 优雅实现项目实践过程中的5种场景

文章目录 1.前言2.使用方式1. 添加Redisson依赖:2. 配置Redis连接信息3. 使用场景3.1. 分布式锁3.2. 限流器(Rate Limiter)3.3. 可过期的对象(Expirable Object)3.4. 信号量(Semaphore)3.5. 分布…

实践-CNN卷积层

实践-CNN卷积层 1 卷积层构造2 整体流程3 BatchNormalization效果4 参数对比5 测试效果 1 卷积层构造 2 整体流程 根据网络结构来写就可以了。 池化 拉平 训练一个网络需要2-3天的时间。用经典网络来,一些细节没有必要去扣。 损失函数: fit模型&…

【网络基础】应用层协议

【网络基础】应用层协议 文章目录 【网络基础】应用层协议1、协议作用1.1 应用层需求1.2 协议分类 2、HTTP & HTTPS2.1 HTTP/HTTPS 简介2.2 HTTP工作原理2.3 HTTPS工作原理2.4 区别 3、URL3.1 编码解码3.2 URI & URL 4、HTTP 消息结构4.1 HTTP请求方法4.2 HTTP请求头信…

欧拉函数和最大公约数

分析:如果两个数的最大公约数是一个质数p,那么这两个数都除以p,得到的两个数的最大公约数一定是1. 反证法:如果得到的两个数的最大公约数不是1,那么把此时的最大公约数乘以上边的最大公约数,得到的一定比上…

【解读Spikingjelly】使用单层全连接SNN识别MNIST

原文档:使用单层全连接SNN识别MNIST — spikingjelly alpha 文档 代码地址:完整的代码位于activation_based.examples.lif_fc_mnist.py GitHub - fangwei123456/spikingjelly: SpikingJelly is an open-source deep learning framework for Spiking Neur…

Java真实面试题,offer已到手

关于学习 在黑马程序员刚刚开始的时候学习尽头非常足,到后面逐渐失去了一些兴趣,以至于后面上课会出现走神等问题,但是毕业时后悔晚矣。等到开始学习项目一的时候,思路总会比别人慢一些,不看讲义写不出来代码。 建议…

Kubuesphere部署Ruoyi:持久化存储配置

按照如下教程配置NFS 先服务器&#xff1a;搭建 NFS 服务器 后客户端&#xff1a;安装 NFS Client 按照链接操作以后&#xff0c;在客户端上面把目录挂载到服务端 rootclient_banana:/# mount 172.25.110.41:/mnt/nfs_share /mnt/client_floder 客户端: mount <server-ip…

【Microsoft 支持】【数据库-MySql】当您尝试从大于 5000 的 TCP 端口连接时收到错误 WSAENOBUFS (10055)

​ 一、转载原文 When you try to connect from TCP ports greater than 5000 you receive the error ‘WSAENOBUFS (10055)’ Symptoms If you try to set up TCP connections from ports that are greater than 5000, the local computer responds with the following WSAE…

什么是微服务?

2.微服务的优缺点 优点 单一职责原则每个服务足够内聚&#xff0c;足够小&#xff0c;代码容易理解&#xff0c;这样能聚焦一个指定的业务功能或业务需求&#xff1b;开发简单&#xff0c;开发效率提高&#xff0c;一个服务可能就是专一的只干一件事&#xff1b;微服务能够被小…

CVPR 2023 | 用户可控的条件图像到视频生成方法(基于Diffusion)

注1:本文系“计算机视觉/三维重建论文速递”系列之一&#xff0c;致力于简洁清晰完整地介绍、解读计算机视觉&#xff0c;特别是三维重建领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, NeurIPS, ICLR, ICML, TPAMI, IJCV 等)。 本次介绍的论…

python办公自动化有用吗?,python办公自动化能干啥

这篇文章主要介绍了python自动化办公真的有用吗 知乎&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 Hello大家好&#xff0c;我是小猴紫&#xff0c;一个帅气、善良、勇敢、正…

Unity ARFoundation 配置工程 (Android)

注意&#xff1a; 1、AR Core是Google的产品&#xff0c;因为谷歌制裁华为&#xff0c;所以 有些 华为机可能不支持AR Core的软件&#xff1b; 2、手机在设置里搜索Google Play&#xff0c;看看是否已经安装上了&#xff0c;如果没有装此服务&#xff0c;去商城里搜索Google Pl…

机器人CPP编程基础-01第一个程序Hello World

很多课程先讲C/C或者一些其他编程课&#xff0c;称之为基础课程。然后到本科高年级进行机器人专业课学习&#xff0c;这样时间损失非常大&#xff0c;效率非常低。 C/单片机/嵌入式/ROS等这些编程基础可以合并到一门课中进行实现&#xff0c;这些素材已经迭代三轮以上&#xf…

脚本一键生成通用接口,一分钟实现增删改查

直接使用无需看此配置 快速生成通用接口业务配置 &#xff1a; https://blog.zysicyj.top/2023/08/14/快速生成通用接口业务配置 一、插件安装 二、脚本 关注绿色聊天软件【程序员朱永胜】回复&#xff1a;1013 下载 三、使用 拷贝到扩展目录下 修改mybatisCodehelper.vm 修改i…

说一下什么是tcp的2MSL,为什么客户端在 TIME-WAIT 状态必须等待 2MSL 的时间?

1.TCP之2MSL 1.1 MSL MSL:Maximum Segment Lifetime报文段最大生存时间&#xff0c;它是任何报文段被丢弃前在网络内的最长时间 1.2为什么存在MSL TCP报文段以IP数据报在网络内传输&#xff0c;而IP数据报则有限制其生存时间的TTL字段&#xff0c;并且TTL的限制是基于跳数 1.3…

mysql中在有数据的表中新增一个主键处理方案

需求&#xff1a;因为业务需要修改表中原来的主键为新增的字段&#xff1b; 处理方案&#xff1a; 1、先将表名修改一下&#xff1b; 2、新增一个一样的表结构&#xff0c;表名与原表名一致&#xff0c;多了一个主键&#xff08;自增&#xff09;的字段&#xff1b; 3、把原…

ubuntu中安装python

最简单方便的是 apt 使用第三方的 ppa 源&#xff0c;然后直接 apt 安装 python3.9 安装 software-properties-common 获取add-apt-repository命令&#xff1a;apt install -y software-properties-common添加第三方的 ppa 源&#xff1a;add-apt-repository ppa:deadsnakes/p…