STM32笔记之 GUI(LittlevGL移植)

写在前面:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。

 

目录

一、LittlevGL GUI

二、文件提取

三、移植操作及添加接口

四、执行处理

五、Demo运行及配置


 

一、LittlevGL GUI

LittlevGL是一个免费的开放源代码图形库,它提供创建嵌入式GUI所需的一切,它具有易于使用的图形元素,精美的视觉效果和低内存占用;功能强大且易于使用的嵌入式GUI,具有许多小部件,高级视觉效果(不透明度,抗锯齿,动画)和低内存要求(16K RAM,64K Flash)

它的官网:https://littlevgl.com/

手册:https://docs.littlevgl.com/zh-CN/html/index.html

项目开源地址:https://github.com/littlevgl/lvgl

其他什么的,这里就不多解释了,上面链接里的内容都写的明明白白的

 

二、文件提取

首先,我们先 git clone,把它的提供的项目文件拉取下来,我这里是用的是 6.1.2发行版,打开文件夹可以看到如下文件:

然而我们真正需要的只是框选的文件,所以我们只需提取那几个文件就好了

 

如果你想要试一下官方提供的 Demo,可以再 git clone一个例子项目,链接:https://github.com/littlevgl/lv_examples

然后把下图框选的文件提取出来

 

三、移植操作及添加接口

文件提取完成后,并入到我们的工程里面(PS:这里截的是改好的文件)

lvgl/src文件太多,就不展开截图了,记住,src里的文件需要全部都添加进去,因为它包含了 lvgl的所有组件的功能

接着我们先打开管理整个 lvgl的配置文件,按照它描述修改就好了

从上图可以看到,我已经把它改成了 lv_conf.h了,还记得上面说的提取的 lv_conf_template.h文件吗?对滴,就是把它重命名了,另外有一些也是一样的道理,官方写的还是很明白的,实在不知道怎么操作,那就再翻手册呗;还有就是把需要用到的文件开头部分的 #if 0都修改为 #if 1

好了,当你琢磨完配置文件后,那么就来修改一下接口文件吧,就是上图的 lvgl/port的那三个文件,其实看名字就知道了

文件说明
lv_port_disp配置显示器的接口功能的文件
lv_port_indev配置触摸等输入设备的接口功能的文件
lv_port_fs配置 FatFs文件系统的接口功能的文件

在这里,接入 FatFs文件系统的操作就不说,只讲另外的那两个,因为这两个才是最重要的

1、先来分析 lv_port_disp.c文件

  • lv_port_disp_init函数

这里要做的主要是选择我们想要提供给 lvgl操作的显示缓存空间

设置 lvgl使用的显示尺寸,这里直接等于 lv_conf.h的宏就好了

  • disp_init函数

这里添加你用的显示器初始化函数就完事了

  • disp_flush函数

这里也是按照它说的,添加底层描点函数就行了,当然,保险一点,我们可以加上一些检测功能

2、再者分析 lv_port_indev.c文件

  • lv_port_indev_init函数

这里面有包含很多输入设备的接口函数,从它注释可以知道

    /* Here you will find example implementation of input devices supported by LittelvGL:
     *  - Touchpad
     *  - Mouse (with cursor support)
     *  - Keypad (supports GUI usage only with key)
     *  - Encoder (supports GUI usage only with: left, right, push)
     *  - Button (external buttons to press points on the screen)
     *
     *  The `..._read()` function are only examples.
     *  You should shape them according to your hardware
     */

但是我们目前只需处理触摸的接口就行,其他的屏蔽掉

  • touchpad_init函数

上面那个函数初始化的时候会调用到这里,而这里是用来存放我们添加的触摸底层接口

  • touchpad_read函数

是会被库调用来读取 touchpad信息的,不用改动它,因为它留有接口出来,就是下面的函数

  • touchpad_is_pressed函数

用来获取触摸状态的接口

  • touchpad_get_xy函数

顾名思义,用来获取 xy坐标的

 

四、执行处理

在写好接口后,要让 lvgl执行起来其实很简单

1、初始化

初始化只需要添加这几个接口

2、lvgl时基

lvgl它需要一个时基来维持,在这里我是用 Systick时钟来为其提供需要,当然你也可以用其他定时器;传入参数是你对应所做的时基计数,单位是 ms

3、执行处理

我们需要周期执行 lv_task_handler这个函数,因为 lvgl的刷新靠的就是这个函数

 

五、Demo运行及配置

当你把以上的配置都弄好之后,那么你可以运行一下官方提供的 demo.c文件的例子,添加 demo_create函数

其余的都不用怎么改动

然后在 lv_ex_conf.h里面,打开你想要用的操作

效果:

还有其他效果,具体可以自己去摸索

  • 9
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值