使用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软件

(未完待续。。。)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】丑数题目合辑

文章目录 263. 丑数思路代码 264. 丑数 II方法一:最小堆思路代码 方法二:动态规划(三指针法)思路代码 1201. 丑数 III方法:二分查找 容斥原理思路代码 313. 超级丑数方法:“多路归并”思路代码 总结参考资…

PCIe接口的PCB布局布线要求

PCI-Express,简称“PCI-e”是一种高速串行计算机扩展总线标准,PCI-E属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,它的主要优势就是数据传输速率高。 PCI-E2.0和PCI-E3.0主要存在…

Element Plus报错:ResizeObserver loop completed with undelivered notifications.

el-selected踩坑&#xff1a;el-selected 显示下拉框 mouseover 时报错&#xff01;&#xff01;&#xff01; 原来是属性 popper-append-to-body 被废除&#xff0c;改为 teleported。 element ui <el-select:popper-append-to-body"false"value-key"id&q…

uniapp 使用canvas画海报(微信小程序)

效果展示&#xff1a; 项目要求&#xff1a;点击分享绘制海报&#xff0c;并实现分享到好友&#xff0c;朋友圈&#xff0c;并保存 先实现绘制海报 <view class"data_item" v-for"(item,index) in dataList" :key"index"click"goDet…

导出微信好友,批量加好友、导出微信群员信息

下面的代码基于千寻框架&#xff0c;都测试过了&#xff0c;都能正常使用。 需要项目代码或者千寻框架的可以加我V&#xff1a;iostreamX64 注意&#xff1a;批量加好友的时候记得设置个时间间隔&#xff0c;加好友太频繁微信会被封的。 导出微信群员信息 import pandas as…

arm:day2

.text 文本段 .global _start 声明一个_start全局函数的入口 _start: _start标签&#xff0c;就是c语言的函数/* mov r0,#9 r09mov r1,#15 r115 loop: cmp r0,r1 比较r0和r1 beq stop 如果r0等于r1&#xff0c;跳转stopsubhi r0,r0,r1 如果r0大于r1&#xff0c;…

Docker查看、创建、进入容器相关的命令

1.查看、创建、进入容器的指令 用-it指令创建出来的容器&#xff0c;创建完成之后会立马进入容器。退出之后立马关闭容器。 docker run -it --namec1 centos:7 /bin/bash退出容器&#xff1a; exit查看现在正在运行的容器命令&#xff1a; docker ps查看历史容器&#xff0…

解决hbase节点已下线,但在status中显示为dead问题

工作中需要下线4台hbase小节点&#xff0c;下线完成后使用status 命令查看,有一台为dead状态: 使用status detailed 查看&#xff0c;发现“hd-03"这台节点是dead。 检查各节点配置文件无误&#xff0c;并使用 /opt/hbase/bin/hbase-daemon.sh restart master 重启两个…

kafka基本概念及操作

kafka介绍 Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区的&#xff08;partition&#xff09;、多副本的 &#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最大的特性就是可以实时的处理大量数据以满足各…

java毕业设计-智慧食堂管理系统-内容快览

首页 智慧食堂管理系统是一种可以提高食堂运营效率的管理系统。它将前端代码使用Vue实现&#xff0c;后端使用Spring Boot实现。这个系统的目的是简化食堂管理&#xff0c;提高食堂服务质量。在现代快节奏的生活中&#xff0c;人们对餐饮服务提出了更高的要求&#xff0c;食堂管…

457. 环形数组是否存在循环

457. 环形数组是否存在循环 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;经验吸取 原题链接&#xff1a; 457. 环形数组是否存在循环 https://leetcode.cn/problems/circular-array-loop/description/ 完成情况&#xff1a; 解题思路…

undefined reference to `dlopen‘ ‘SSL_library_init‘ `X509_certificate_type‘

使用Crow的时候需要注意crow依赖asio依赖OpenSSL&#xff0c;asio要求1.22以上版本&#xff0c;我使用的是1.26.0&#xff1b; 这个版本的asio要求OpenSSL是1.0.2&#xff0c;其他版本我得机器上编不过&#xff0c;ubuntu上默认带的OpenSSL是1.1.1; 所以我下载了OPENSSL1.2.0重…