LVGL的一些问题

写这个的原因嘛·······算是任务吧,也算是给后面的朋友留个灯咯!毕竟我当时学LVGL的时候挺希望有人来帮我解决问题的

以下是我学习LVGL的过程

  1. lvgl是什么
  2. 为什么要去学lvgl
  3. 学lvgl之前的准备
  4. 工程的移植
  5. 移植过程中的常见问题

前面的看个乐子就好了,下面就进入正文了


1.LVGL是什么

LVGL全称Light and Versatile Graphics Library,轻量级通用图形库。

LVGL是一个开源的ui图形库,能跑在各种单片机上(树莓派、32也行,51的我没试过)。支持按钮,触摸,编码器旋钮,鼠标等输入设备。支持高级图形效果,动画、反锯齿、透明度等。LVGL的界面非常精美,可以在官网的先感受一下他的强大--------官网自己去


2.为什么要去学lvgl

如果你还没学到stm32的屏幕这些模块,可能你就体会不到一个方便、快捷的图形化软件到底有多重要了,学习过LCD屏幕的朋友应该知道,想要在LCD屏幕上画出任何的东西都是靠那几个函数,例如画线、画圆等函数,再想加点好看的颜色,也只能用那个纯色函数,那个函数有多鸡肋我就不多说了。LVGL的图形化界面是非常精美的,并且LVGL的dome都是开源的,学好了LVGL绘制图形化界面就像拼图一样了(有点夸张但不多)


3.学lvgl之前的准备

  • 屏幕移植

图形化图形化!!!那肯定要有屏幕啦,当然有屏幕的意思不是真就只有个屏幕,屏幕的移植你要先弄好,推荐一个学长的博客------ 汪十万八千 。学长写了一篇非常非常详细的lcd屏移植教程,没移植的请自行去看吧

  • 资料的下载

LVGL官方的dome其实都在Git上面开源了,考虑到可能大部分的朋友们都没有魔法,指条明路-----正点原子lvgl的教程里有,好像是在第一集吧。

到这里学习lvgl前的准备也算是完了一半了,下面就到lvgl的移植了


4.lvgl的移植

前提:屏幕移植成功且触摸正常

  1. 改文件

    从正点原子那你会得到一个文件夹:lvgl-release-v8.2,其中只有5个文件是跟我们的移植有关的,分别是demos、examples、src、lvgl_conf_template.h 和lvgl.h 。把这5个文件留下,其他的都删掉

    然后打开文件夹:LVGL / examples ,把里面除了porting以外的文件都删掉。打开刚才的 “porting” 文件夹,把里面6个文件的**_template**都删掉

    • 如果有朋友看了其他的教程就要问了,为啥lvgl-release-v8.2文件夹下那两个lvgl文件不用修改呢?因为文档里引入的头文件本来就是有template的,你在这改了进入keil后还是要改头文件的路径,那何必多此一举呢!
  2. 建立工程

事先说明,大部分朋友在移植的过程中出现报错都是在这一步,所以要耐心、细心

  1. 将正点原子HAL库定时器例程里**\Drivers\BSP路径下的TIMER文件粘贴到第28个例程触摸屏实验**的BSP文件中
  2. 创建一个名为LVGL的文件,在此文件下再创建两个文件,分别名为GUI和GUI_demo,再在GUI文件下创建一个lvgl文件
  3. 将examples、src、lvgl_conf_template.h 和lvgl.h 文件粘贴到路径**LVGL\GUI\lvgl **下,将demos粘贴到GUI_demo文件中,
  4. 在keil里创建4个文件夹分别命名LVGL_myGUILVGL_confLVGL_portingLVGL_src,并在它们中添加文件
文件夹 (Group)添加文件
LVGL_myGUI不用添加。
LVGL_conf共2个文件:"LVGL"下的: lv_conf.h、lvgl.h(要选择文件类型才能看到h文件)
LVGL_porting共4个文件:“LVGL/ examples / porting” 下的:lv_port_disp.c 、lv_port_disp.h、 lv_port_indev.c、lv_port_indev.h;(要选择文件类型才能看到 h 文件)
LVGL_src近200+的c文件:“LVGL / src” 下的所有 c 文件; 重点:包括src里所有子、子子文件夹的 c 文件. 不用添加h和mk文件.

6.添加完记得编译一下,这里有报错的话,后面的就没必要进行了

  • 特别提示:src的文件好像有100+还是200+来着,如果有报错99%都是src的文件引入有误,我的建议是把src下的文件清空再重新引入,多试几次,你会成功的

5.文件内容的修改

抱歉了----我想了一下,这个内容挺多的。我现在还不会插入图片,不能很好的解释这个过程,所以请你移步至正点原子的教程中学习这部分的知识吧。接下来就进入到本文的重头戏


6.常见的报错及解决方法

以下的内容是烧录成功但显示有问题的朋友该看的

  • 屏幕只有一半刷新了
  这个就是你屏幕的高和宽设置反了,4.3寸lcd的屏幕设置应该是 HOR:480   VER:800
  • 烧录成功了但是只有一个白屏
这个好像是分配的内存不够的问题吧?抱歉····忘了,可以再startup_stm32f407xx这个文件下将Stack_Size EQU 后面的数字改大点,例如400改为800
  • 刷新很卡,很慢
Lv_conf.h文件下将缓冲区大小[800 * 10]中的10改大点,当然别太大了它很吃内存的,我试过了最大应该是[800 * 81],这个极限是我不加其他模块,只有屏幕和lvgl的情况下,也就是此时cpu只负责它俩的工作下极限为800*81,一般来说肯定会加模块的,所以请结合自身情况进行修改
Lv_conf.h文件下大概是84-------305,这个是响应时间
  • 疯狂报错几百上千个,且大都是未定义
不用想了,这个肯定就是某个.h文件忘记加进去了
  • 报错显示某个文件找不到
文件的添加路径有问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值