GUI简介

GUI:图形用户界面,是指采用图形方式显示计算机[泛称,指人机交互的机器]操作用户界面。

GUI库:图形用户界面库,调用GUI库的函数即可快速绘制所需的用户界面。

GUI库优势: 开发难度低(有可以设计GUI的软件,大大降低门槛)

可移植性高(只要硬件达到要求,适配也做好,就可以直接使用GUI库)

风格统一、协调

嵌入式系统中常用的GUI库:emWin

                                              LVGL(主流)

                                              TouchGFX(可以直接帮我们生成图形界面,不需要手敲代码)

                                               QT(通过图形界面生成ui,在市场的占有率非常高)

LVGL简介

LVGL(Light and Versatile Graphics Library)是一个轻量、多功能的开源图形库。

特点: 支持多种输入设备(触摸屏、键盘、鼠标、编码器)

            部件、功能丰富

            具备高级图形特征

            支持多种样式属性

            C语言编写

LVGL移植要求

V8版本的lvgl移植要求:

  16/32/64位微控制器或处理器

  主控频率:>16MHz

  Flash/ROM:>64kb,建议180kb以上

   RAM:>8kb,建议24kb以上(ram的大小和优化lvgl的效果有关。)

  图形缓冲区:>水平分辨率像素(还要看色彩是多少byte),建议大于1/10屏幕总像素

  C99或更新版本的编译器

优化lvgl运行效果的方法:

  提高芯片主频(芯片主频越高,外设频率也越高,FMCS接口的频率也会越快)

  增大SRAM容量(图形缓冲区是开在SRAM上的,SRAM的容量越大,那么图形刷新的区域越大,显示效果越流畅越好),提高读写速度

  增大图形缓冲区,使用双缓冲

  减小需要刷新的总像素

  提高图像数据的传输速度(DMA2D?)

关键点:缩短图像刷新所需时间

LVGL资料获取:

GitHub链接:https://github.com/lvgl/lvgl

可以获取源码

LVGL库文件介绍

V8.2的库文件介绍:

移植LVGL需要保留的文件:example文件夹下的porting文件夹、src文件夹、lv_conf_template.h、lvgl.h

学习LVGL之前需要掌握的知识

知识点

要求

定时器

初始化、中断

屏幕

显示、触摸、DMA2D

SRAM、内存管理

初始化、内存分配

文件系统、SD卡

初始化、读写

系统(FREERTOS)

移植、创建任务、获取心跳

C 语言

指针、结构体

 

LVGL移植

LVGL移植关键点

显示、输入设备、系统、内存(内部SRAM或者外部SRAM、内存管理[算法])

显示是必须的,其他三个功能按需选择

LVGL移植整体流程

1、  确定输入输出设备

2、  确定所需的可选功能

3、  准备LVGL库、例程

4、  添加LVGL库到mdk工程

5、  配置输入输出设备

6、  为LVGL提供时基、测试代码是否移植成功