lvgl8.x 移植到 stm32f4

1. 对芯片的要求

  • 处理器 163264 位微控制器或处理器
  • 时钟频率最低 16 MHz 时钟频率
  • Flash/ROM 对于非常重要的组件要求大于 64 kB (建议大于180 kB)
  • RAM 静态 RAM 使用量约 2 kB,取决于所使用的功能和对象类型
    堆栈:大于 2kB (建议大于 8 kB)
    动态数据(堆):大于 2 KB(如果使用多个对象,则建议大于 16 kB)。由 lv_conf.h 中的 LV_MEM_SIZE 宏进行设置
    显示缓冲区:大于水平分辨率像素(建议大于 10 行水平分辨率),MCU 或外部显示控制器中的一帧缓冲区
  • 编译器必须支持 C99 或更高版本的编译器
  • 技术栈具备基本的 C (或C ++) 知识:指针,结构,回调

2. 下载源码包

在移植之前需要先下载源码包,源码包可以通过使用 GitHub 进行克隆或下载,在 Github 中搜索 lvgl 即可搜索到 lvgl 的官方仓库,进入官方仓库即可使用 git 克隆到电脑本地,或直接点击下载同样可将整个源码包下载到电脑本地中。

3. 概览源码目录

20220111232911.jpg
主要需要使用的有:examples/src/lv_conf_template.hlvgl.h。分别为 lvgl 例程文件夹源码文件夹lvgl 配置文件模板lvgl 主要头文件

3.1. src 源码目录

20220111234357.jpg
core 核心源码
draw 绘图源码
extra 用于实现额外功能,一些高级界面实现
20220112000010.jpg
font 内置字体
gpu GPU 驱动实现,这需要所使用的芯片支持
hal 硬件抽象层
misc 杂项
widget 基础界面组件

3.2. examples 例程目录

20220111234424.jpg
anim 动画使用例程
arduino 支持 arduino 的配置文件,一般不使用,除非使用 arduino
assets 一些小组件的代码或图片数组,为了便于知道代码产生的样式还配套了对应样式图片
event 一些 lvgl 事件编写与使用例程
get_started 组件使用例程
layouts lvgl 布局使用例程
porting lvgl 驱动对接方法模板
scroll lvgl 滚动使用例程
styles 组件风格使用例程
widgets 同样是 lvgl 组件使用例程
总体来说这个文件夹都是顾名思义为一些使用参考代码,想快速的查看效果就可以复制使用这里的代码来生 成需要的组件进行查看,这个目录较为常用。

4. stm32 模板工程

移植 lvgl 之前我们需要搭建一个能够编译 stm32 代码的编译工程,用于编译 stm32 相关代码文件(比如常用的 Keil-MDK 工程)。对于开发人机界面来说此时也需要准备一块显示屏(至于什么样的显示屏都可以,lvgl 内部并不关心你使用的是何种屏幕),并使用 stm32 来驱动它。至于如何搭建 stm32 编译工程这里并不介绍,因为这里主要说明如何来将 lvgl 移植到 stm32,同时相信能够看到这里那一定已经知道如何搭建 stm32 的编译工程了。

注意:这里 keil 版本使用 keil5.26
STM32 使用 STM32F407VET6当然这个移植方法不仅适用于 STM32F407VET6,stm32 系列单片机或其他类型的单片机均适用

5. 开始移植

5.1 删减不需要使用的文件夹和文件

解压前面下载的 lvgl 源码包可以得到一个 lvgl-8.0.2 文件夹,留下 lvgl-8.0.2/examples/文件夹,lvgl-8.0.2/src/文件夹,lvgl-8.0.2/LICENCE.txt文件,lvgl-8.0.2/lv_conf_template.h文件lvgl-8.0.2/lvgl.h文件lvgl-8.0.2/README.md文件,其余均可删除。
同时将 lvgl-8.0.2/examples/porting文件夹剪切到上一层目录(即 lvgl-8.0.2/),最后如下图所示
20220113231114.jpg

5.2 重命名文件

lvgl-8.0.2/lv_conf_template.h 文件改为 lv_conf.h,(配置文件)
lvgl-8.0.2/porting/lv_port_disp_template.c 文件改为 lv_port_disp.c (显示相关)
lvgl-8.0.2/porting/lv_port_disp_template.h 文件改为 lv_port_disp.h(显示相关)
lvgl-8.0.2/porting/lv_port_fs_template.c 文件改为 lv_port_fs.c(文件系统相关)
lvgl-8.0.2/porting/lv_port_fs_template.c 文件改为 lv_port_fs.h(文件系统相关)
lvgl-8.0.2/porting/lv_port_indev_template.c 文件改为 lv_port_indev.c(输入设备相关)
lvgl-8.0.2/porting/lv_port_indev_template.c 文件改为 lv_port_indev.c(输入设备相关)

6. 添加 lvgl 文件到 keil5

6.1 添加 lvgl 源码

添加 lvgl-8.0.2/src/core 目录下的所有 c 文件
添加 lvgl-8.0.2/src/draw 目录下的所有 c 文件
添加 lvgl-8.0.2/src/extra 目录下的所有 c 文件
添加 lvgl-8.0.2/src/font 目录下的所有 c 文件
添加 lvgl-8.0.2/src/gpu 目录下的所有 c 文件
添加 lvgl-8.0.2/src/hal 目录下的所有 c 文件
添加 lvgl-8.0.2/src/misc 目录下的所有 c 文件
添加 lvgl-8.0.2/src/widgets 目录下的所有 c 文件
20220113235157.jpg

添加 lvgl-8.0.2/porting/lv_port_disp.c ,因为这里仅查看移植成功后的显示效果,所以这里目前仅添加显示相关设备接口文件。
20220113235206.jpg

6.2 添加 lvgl 源码头文件路径

需要添加的头文件路径有如下几个
lvgl8.0.2/
lvgl8.0.2/src
lvgl8.0.2/porting

详细查看:https://cloud.tencent.com/developer/article/1862110

7. 修改 lv_conf.h

将 lvgl 配置头文件的 条件编译置为 1,启用配置。
20220114114942.jpg

8. 修改 stm32 堆栈大小

打开 stm32 的启动文件进行修改,如下图
20220114095613.jpg

9. keil c99 模式

按照下图所示的步骤可以将 keil5 设置为 c99 模式。
20220114103714.jpg

10. 对接屏幕绘图接口

该部分详细内容查看后面的文章 lvgl8.0 对接屏幕驱动 这部分。

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值