使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装
使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装
受限于每篇文章最多只能贴9张图的限制,这个教程被拆分成了多篇文章连载发布,完整目录结构如下图x所示。后续会发布完整教程的pdf文件,敬请期待。
文章目录
- 使用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自带了丰富的控件:窗口、按键、标签、列表、图表等,还可以自定义控 件;支持很多特效:透明、阴影、自动显示隐藏滚动条、界面切换动画、图标打开关闭动画、平滑的拖拽控件、分层显示、反锯齿、仅耗少量内存的字体等等。
同LVGL应用场景类似的主流的嵌入式GUI组件还有emWin、TouchGFX等,相比较而言,LVGL对于开发者更加友好,对比典型指标如表x所示。
LVGL | emWin | TouchGFX | |
---|---|---|---|
商业使用 | 免费 | 收费 | 收费 |
可移植性 | 多平台 | 多平台 | 主要为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开源,并且支持图形环境的设计和仿真功能,最具符合开发者全面需求。
GUI Guilder | Square Line Studio | LVGL 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所示。
准备带有显示屏的开发板
本例使用基于国产灵动微电子“星辰”处理器内核系列的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存储芯片。
BIRD-F5
开发板以MM32F5277E9PV
为主控芯片,集成了FPC
插座,可以组装TFT显示屏模块,将MM32F5270
芯片上的FSMC
接口同TFT液晶屏对接通信,如图x所示。
-
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
从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所示。
可以使用开源的OpenJDK即可。OpenJDK的下载地址:https://learn.microsoft.com/zh-cn/java/openjdk/download。
在安装OpenJDK的过程中,切记要将JDK的可执行文件的路径添加到开发主机系统的环境变量中。如图x所示。安装OpenJDK的最后步骤中,可能也有自动添加系统环境变量的操作选项,也可勾选其中,自动完成添加。
安装GUI Guider和OpenJDK完毕后,运行GUI Guider软件,可以进入图形UI编辑界面。如图x所示。
(未完待续。。。)
相关文章:

使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装
使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装 受限于每篇文章最多只能贴9张图的限制,这个教程被拆分成了多篇文章连载发布,完整目录结构如下图x所示。后续会发布完整教程的pdf文件,敬请期待。 图x 完整教程文档…...

解决:django设置DEBUG=false时出现的问题
首先,我用的是django4.2,python3.10版本 本来,如果在settings.py中使用 DEBUG True,那么什么问题也没有,当然,这属于调试模式。 DEBUG True TEMPLATE_DEBUG DEBUGSTATIC_URL /static/ STATICFILES_DI…...
2023-08-10力扣每日一题
链接: 1289. 下降路径最小和 II 题意: 每一行选择一个数字,相邻行选择不能是同一列,求选择的数字和最小是多少 解: 每一行选择最小的次小的,下一行能加最小的(列坐标不冲突)就加…...
C#与halcon联合 缩放移动自适应图像
读取图片 //获取文件路径下的图片public HObject GetImgFromPath(string imgPath){HObject L_Img;HOperatorSet.GenEmptyObj(out L_Img);//清空图片L_Img.Dispose();//释放HOperatorSet.ReadImage(out L_Img, imgPath);//读取图片存入到l_imgreturn L_Img;}拉伸显示 //图片拉…...

推荐 4 个 yyds 的 GitHub 项目
本期推荐开源项目目录: 1. 开源的 Markdown 编辑器 2. MetaGPT 3. SuperAGI 4. 一个舒适的笔记平台 01 开源的 Markdown 编辑器 Cherry 是腾讯开源的 Markdown 编辑器,基于 Javascript具有轻量简洁、易于扩展等特点, 它可以运行在浏览器或服…...
chrome插件开发实例05-页面间通信
目录 一、页面间通信的方式 方式1: 通过消息通信...

linux安装ftp
一、安装 参考博客 https://blog.csdn.net/dafeigecsdn/article/details/126518069 rpm -qa |grep vsftpd # 查看是否安装ftp yum -y install vsftpd # 安装vsftpuseradd -d /home/lanren312 lanren312 # 指定在/home目录下创建用户 passwd lanren312 # 给用户设置密码 # 输…...

前后端分离------后端创建笔记(上)
本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…...
Java不可变集合详解
什么是不可变集合 不可变集合,英文叫 immutable 顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。 为什么要使用不可变集合 不可变对象有很多优点,包括: 当对象被不可信的…...
常见的JavaScript日常问题
在众多的编程语言中, JavaScript 给大部分的人的第一印象是人畜无害,看起来就简单的,对稍微有点儿开发经验的人来说,在网页中写个JavaScript功能也相当简单。但是当你真的得了解了JavaScript之后就会发现,它比我们想象…...
css modules的用法和在react项目中的应用
参考文章 CSS Modules 的用法 CSS Modules 的功能很单纯,只加入了局部作用域和模块依赖,可以保证某个组件的样式,不会影响到其他组件。 局部作用域 CSS的规则都是全局的,任何一个组件的样式规则,都对整个页面有效。…...

【LangChain概念】了解语言链️:第2部分
一、说明 在LangChain的帮助下创建LLM应用程序可以帮助我们轻松地链接所有内容。LangChain 是一个创新的框架,它正在彻底改变我们开发由语言模型驱动的应用程序的方式。通过结合先进的原则,LangChain正在重新定义通过传统API可以实现的极限。 在上一篇博…...
步入React前厅 - Css In React
目录 扩展学习资料 行内样式 引入样式表 CSS Module /src/components/common.module.css /src/components/listitem.module.css css管理进阶 Css管理工具 练习 扩展学习资料 资料名称 链接 css module CSS Modules 用法教程 - 阮一峰的网络日志 在React中使…...
OpenCV(三)——图像分割(二)
目录 4.边缘检测 4.1 图像梯度的概念 4.2 模板卷积和梯度图的概念 4.3 梯度算子...

28.Netty源码之缓存一致性协议
Mpsc Queue 基础知识 Mpsc 的全称是 Multi Producer Single Consumer,多生产者单消费者。Mpsc Queue 可以保证多个生产者同时访问队列是线程安全的,而且同一时刻只允许一个消费者从队列中读取数据。 Netty Reactor 线程中任务队列 taskQueue 必须满足多个…...
造个轮子-任务调度执行小框架-任务清单执行恢复实现
文章目录 前言恢复执行流程失败任务执行重启执行中任务恢复执行修复组件整合组件整合容器启动类总结前言 okey,通过前面的两篇文章,关于这个任务执行这一块,我想应该是明白了。但是这里的话,还是不够的。我们希望对于任务还可以做到执行失败的重试执行,关于这个意外宕机的…...

若依部署前后端
打包项目 前端打包 npm run build:prod将代码上传到指定目录 配置nginx转发 server{listen 8090;server_name localhost;location / {root /home/cc_library/dist;index index.html index.htm;# 配置 history模式,刷新页面会404,,因为服…...

2009年上半年 软件设计师 下午试卷
博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…...

SpringBoot使用自定义事件监听器的demo
记录一下SpringBoot自定义事件监听器的使用方法 案例源码:SpringBoot使用自定义事件监听器的demo 使用的SpringBoot2.0.x版本 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><…...
arcgis定义投影与投影
1、定义 地理坐标系(GCS):利用地球表面的经纬度表示的坐标系统。一般单位为度。投影坐标系(PCS):利用数学换算将三维地球表面上的经纬度坐标转换到二维平面上的坐标系统。一般单位为米。可以认为ÿ…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...