LVGL学习笔记 | 02 - 移植LVGL 8.2到STM32F407开发板(MCU屏)

Posted Mculover666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVGL学习笔记 | 02 - 移植LVGL 8.2到STM32F407开发板(MCU屏)相关的知识,希望对你有一定的参考价值。

一、移植前的准备

1. 裸机工程

2. lvgl源码

下载最新发布的 8.2.0 版本:https://github.com/lvgl/lvgl/releases/tag/v8.2.0

内容如下:

lvgl源码在 src 目录下:

二、移植lvgl

1. 复制lvgl源码到工程中(需要修改)

  • src:lvgl源码
  • examples\\porting:lvgl移植文件模板代码
  • lv_conf_template.h:配置文件模板代码
  • lvgl.h:lvgl头文件


复制过来后,将配置文件lv_conf_template.h重命名为lv_conf.h

porting下的文件也进行重命名,去掉_template

2. 添加lvgl到工程中

(1)添加lvgl源码

添加draw文件夹之下的代码,同时添加其sw文件夹下的文件:

添加extra文件夹下的所有文件





(2)添加lvgl移植代码

(3)添加lvgl配置文件(仅为了方便编辑)

(4)添加lvgl demo/widgets 这个示例:

(5)添加头文件路径

(6)解决 assert 函数编译错误。

lvgl引用的 qrcodegen.c库中使用了 assert函数,但是MDK提供的Micro Lib中不提供此函数,所以要定义 NDEBUG 宏来失效assert函数:


此时编译,可以正常编译通过。

3. 修改lvgl配置文件

修改lvgl_conf.h文件。

(1)使能配置文件内容:

(2)设置颜色格式为RGB565:

(3)使能widgets demo:

(4)在使用过程中发现lvgl配置文件未生效,在 lvgl.h中手动添加配置文件:

4. 修改适配底层屏幕驱动

修改lv_port_disp.c文件。

(1)使能文件内容


(2)在头文件中定义水平像素点

#define MY_DISP_HOR_RES   800


(3)修改 lv_port_disp_init 函数,选择定义缓存的方式,并设置屏幕水平和垂直像素点大小:

(4)修改disp_init函数,适配屏幕初始化,调用屏幕初始化函数:

(5)修改disp_flush函数,适配屏幕驱动函数,这一步是整个移植过程的核心,可以用打点函数适配(速度较慢),也可用填充数据函数适配(速度较快):

5. 调用lvgl

修改main.c文件。

(1)包含头文件

#include "lvgl.h"
#include "porting/lv_port_disp.h"
#include "demos/widgets/lv_demo_widgets.h"

(2)依次调用初始化函数:

// 初始化lvgl
lv_init();
// 初始化lvgl底层屏幕驱动
lv_port_disp_init();
// 初始化lvgl demo
lv_demo_widgets();

(3)在while循环中调用lvgl处理函数:

while (1)

	/* USER CODE END WHILE */
	lv_task_handler();
	
	/* USER CODE BEGIN 3 */

(4)在Systick中断服务函数中调用lvgl处理函数:

void SysTick_Handler(void)

	/* USER CODE BEGIN SysTick_IRQn 0 */
	
	/* USER CODE END SysTick_IRQn 0 */
	HAL_IncTick();
	/* USER CODE BEGIN SysTick_IRQn 1 */
	lv_tick_inc(1);
	
	/* USER CODE END SysTick_IRQn 1 */

编译,下载运行进行测试:


lvgl移植搞定,美中不足的是没有触摸驱动,没法拖动,后续补充~

以上是关于LVGL学习笔记 | 02 - 移植LVGL 8.2到STM32F407开发板(MCU屏)的主要内容,如果未能解决你的问题,请参考以下文章

ESP32学习笔记 - 基于 ESP32 移植 LVGL8.3

ESP32学习笔记 - 移植LVGL

ESP32学习笔记 - 移植LVGL

ESP32学习笔记 - 移植LVGL

基于arduino的ESP32 学习笔记LVGL文件系统移植,中文字库和图片显示

基于arduino的ESP32 学习笔记LVGL文件系统移植,中文字库和图片显示