LVGL学习笔记|LVGL移植

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

LVGL(轻巧而多功能的图形库)是一个免费的开放源代码图形库,它提供创建具有易于使用的图形元素,是一款拥有精美的视觉效果和低内存占用的嵌入式GUI。本文主要介绍lvgl的详细移植过程。


一、硬件要求

LVGL的最低运行要求很低:

●16、32或64位微控制器或处理器

●最低 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 ++)知识:指针,结构,回调…

二、移植

1、 准备工作

●一份带屏幕驱动的工程(这里以GD32F450为例,支持国产!)
●lvgl源码(在官网获取,我这里使用的是lvgl9.0。https://github.com/lvgl/)

2、 文件准备

下载lvgl源码并解压得到移植所需的所有文件,在自己的工程目录下新建一个GUI文件夹,将下图方框选中的文件复制到GUI文件夹中。

在这里插入图片描述

将部分文件名进行修改(非必要,为了统一命名风格)
●lv_conf_template.h–>lv_conf.h
●\examples\porting此目录文件是GUI与工程的API接口文件,修改后如图

在这里插入图片描述

3、 加入工程

打开工程,添加lvgl\examples\porting目录下的文件和lvgl\src目录下的所有文件到工程中。
添加demo。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加头文件路径:
添加lvgl\src目录和所有子文件夹目录
添加lvgl\examples和lvgl\examples\porting目录
添加示例demo的目录
每层目录最好都添加

在这里插入图片描述
在这里插入图片描述

选择C99模式

在这里插入图片描述

修改lv_conf.h文件:
●增加两个屏幕尺寸的宏定义,以实际屏幕像素点修改
●修改原有的屏幕像素格式宏定义,以实际屏幕像素点修改

#define LV_HOR_RES_MAX	800
#define LV_VER_RES_MAX	480
/*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
#define LV_COLOR_DEPTH 16

修改lv_port_disp.c文件,修改disp_flush函数,加入自己的矩形填充函数,各参数来源参考下列代码

/*Flush the content of the internal buffer the specific area on the display
 *You can use DMA or any hardware acceleration to do this operation in the background but
 *'lv_disp_flush_ready()' has to be called when finished.*/
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
		/*Return if the area is out the screen*/
		if(area->x2 < 0) {
			return;
		}
		if(area->y2 < 0) {
			return;
		}
		if(area->x1 > LV_HOR_RES_MAX - 1) {
			return;
		}
		if(area->y1 > LV_VER_RES_MAX - 1) {
			return;
		}		
		
		/*将区域截断到屏幕上*/
		int32_t act_x1 = area->x1 < 0 ? 0 : area->x1;
		int32_t act_y1 = area->y1 < 0 ? 0 : area->y1;
		int32_t act_x2 = area->x2 > LV_HOR_RES_MAX - 1 ? LV_HOR_RES_MAX - 1 : area->x2;
		int32_t act_y2 = area->y2 > LV_VER_RES_MAX - 1 ? LV_VER_RES_MAX - 1 : area->y2;
		/* 屏幕图片显示 */		
		lcd.LCD_Color_Fill(act_x1,act_y1,act_x2,act_y2,(unsigned short *)color_p);
		
	    /*IMPORTANT!!!
	     *Inform the graphics library that you are ready with the flushing*/
	    lv_disp_flush_ready(disp_drv);
}

在定时器中为GUI提供心跳,定时器中断周期是几ms就填几

	lv_tick_inc(1);

初始化并运行任务中断

	lv_init(); //lvgl初始化
	lv_port_disp_init();//显示器显示初始化
	lv_demo_widgets();	//UI创建
	while (1){
	/* 执行UI任务 */
		lv_task_handler();
	}

至此,LVGL移植完成。
官方参考文档:https://docs.lvgl.io/latest/en/html/index.html

  • 3
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在VSCode中进行LVGL 8的移植,你可以参考以下步骤: 1. 首先,确保你已经安装了VSCode和PlatformIO IDE插件。你可以在VSCode的扩展市场中找到并安装PlatformIO IDE插件。 2. 下载LVGL库的最新版本,你可以在LVGL的官方网站上找到并下载。将下载的库解压到你的项目文件夹中。 3. 打开VSCode,并在PlatformIO IDE插件中创建一个新的PlatformIO项目。选择你的开发板型号,比如STM32L476 Nucleo开发板。 4. 在项目中创建一个新的文件夹,并将LVGL库中的`lvgl`和`lv_drivers`文件夹复制到这个新建的文件夹中。 5. 在VSCode的左侧导航栏中,找到并打开PlatformIO的配置文件`platformio.ini`。 6. 在`platformio.ini`文件中,添加以下代码来包含LVGL库和相关驱动: ``` lib_deps = lvgl/lvgl lvgl/lv_drivers ``` 7. 保存`platformio.ini`文件后,重启VSCode,这样PlatformIO会自动启动cmake配置。 现在,你已经完成了LVGL 8在VSCode中的移植。你可以按照LVGL的文档和示例代码开始开发你的GUI应用程序了。请注意,以上是一个简化的步骤,具体的移植过程可能因为你的项目和开发环境的不同而有所变化。你可以参考引用和引用中提供的链接和说明来获取更详细的移植说明和环境配置步骤。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [LVGL移植到基于VSCode的platformio工程的STM32L476 Nucleo开发板的程序(st7789显示驱动)](https://download.csdn.net/download/BigAntHome/15893182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [LVGL学习笔记|Windows环境下模拟LittlevGL:VSCode+MSYS2+Cmake搭建模拟环境](https://blog.csdn.net/m0_47090309/article/details/125552817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值