【LVGL快速入门】LVGL开源框架入门教程之框架移植(二)

简介: 【LVGL快速入门】LVGL开源框架入门教程之框架移植(二)

一.显示功能开启

接着要完成LVGL显示功能的注册,即开启:

1、开启 lv_conf.h

把“#if 0”改为“#if 1”

2、开启 lv_port_disp.h

改1

注意这里还要把"lvgl/lvgl.h"改为"lvgl.h"

3、开启 lv_port_disp.c (这个文件很关键,我们的底层函数主要需要在这实现)

同样的,这里要删去“_template”

这里可以设置你的显示屏的长宽。

lv_port_disp.c这个文件中,还需要选择一个缓冲方式,我们一般选第一种(大概在90到101行),故这里我们注释掉第二和第三种

/* Example for 1) */

   static lv_disp_draw_buf_t draw_buf_dsc_1;

   static lv_color_t buf_1[MY_DISP_HOR_RES * 10];                          /*A buffer for 10 rows*/

   lv_disp_draw_buf_init(&draw_buf_dsc_1, buf_1, NULL, MY_DISP_HOR_RES * 10);   /*Initialize the display buffer*/

//选择第一种缓冲方式,注释掉后两种

//    /* Example for 2) */

//    static lv_disp_draw_buf_t draw_buf_dsc_2;

//    static lv_color_t buf_2_1[MY_DISP_HOR_RES * 10];                        /*A buffer for 10 rows*/

//    static lv_color_t buf_2_2[MY_DISP_HOR_RES * 10];                        /*An other buffer for 10 rows*/

//    lv_disp_draw_buf_init(&draw_buf_dsc_2, buf_2_1, buf_2_2, MY_DISP_HOR_RES * 10);   /*Initialize the display buffer*/

//    /* Example for 3) also set disp_drv.full_refresh = 1 below*/

//    static lv_disp_draw_buf_t draw_buf_dsc_3;

//    static lv_color_t buf_3_1[MY_DISP_HOR_RES * MY_DISP_VER_RES];            /*A screen sized buffer*/

//    static lv_color_t buf_3_2[MY_DISP_HOR_RES * MY_DISP_VER_RES];            /*Another screen sized buffer*/

//    lv_disp_draw_buf_init(&draw_buf_dsc_3, buf_3_1, buf_3_2,

//                          MY_DISP_VER_RES * LV_VER_RES_MAX);   /*Initialize the display buffer*/

       此时当我们完成上述全部步骤后,再次进行编译,应该为 0 Error,如果不是,需要解决所有Error后再进行。但是有一些警告没有关系

接着我们就要正式开始添加驱动文件了,还是在lv_port_disp.c 这个文件中,添加我们所用的LCD的驱动文件:

首先添加驱动头文件:

对这里的添加作简单说明:

       首先,LVGL只是一个开源框架,内部是不含任何驱动函数的,所有驱动函数都是我们自己写或者LCD原厂的例程,我们要通过向LVGL中添加驱动函数来将其和我们的屏幕建立连接。

第一个是static void disp_init(void)这个函数,用于初始化屏幕,在其中添加你的LCD屏幕初始化函数


第二个是static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p),是最基础的刷新绘制函数。


将LCD驱动里的画点函数放在这个函数里,


这是笔者画点函数的声明:

添加完成后:

这里对传入的参数作简单解释:x,y表示坐标,这没什么可说的。但是第三个参数,是指向了颜色结构体成员的指针,其中full字段包含了完整的颜色值,ch只是访问单独的颜色通道值

当你使用这个联合体时,你可以单独设置和获取颜色分量:


lv_color32_t my_color;

my_color.ch.blue = 0xFF;   // 将蓝色分量设置为最大值

my_color.ch.green = 0x00;  // 将绿色分量设置为最小值

my_color.ch.red = 0x00;    // 将红色分量设置为最小值

my_color.ch.alpha = 0x7F;  // 将 alpha 分量设置为 127(50% 透明)

或者你可以将颜色作为一个 32 位的值来操作:


lv_color32_t my_color;

my_color.full = 0xFFFF0000;  // 将颜色设置为红色,完全不透明

这个联合体特别适用于需要颜色操作的系统中,因为它允许有效地使用内存,并且能够快速访问或修改颜色分量,既可以单独操作,也可以作为一个整体。

至此,若不需要触摸功能的话,LVGL的基础功能就移植完成了。

相关文章
|
6月前
|
JavaScript IDE 前端开发
【HarmonyOS 4.0 应用开发实战】TypeScript 快速入门之环境配置
【HarmonyOS 4.0 应用开发实战】TypeScript 快速入门之环境配置
201 0
|
开发框架 小程序 JavaScript
基于mpvue框架的小程序项目搭建入门教程一
基于mpvue框架的小程序项目搭建入门教程一
148 0
|
30天前
【LVGL快速入门】LVGL开源框架入门教程之框架使用(三)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(三)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(三)
|
1月前
|
调度
【LVGL快速入门】LVGL开源框架入门教程之框架移植(四)
【LVGL快速入门】LVGL开源框架入门教程之框架移植(四)
|
1月前
【LVGL快速入门】LVGL开源框架入门教程之框架移植(三)
【LVGL快速入门】LVGL开源框架入门教程之框架移植(三)
|
1月前
|
C语言 图形学 芯片
【LVGL快速入门】LVGL开源框架入门教程之框架移植(一)
LVGL开源框架入门教程之框架移植(一)
135 2
|
30天前
【LVGL快速入门】LVGL开源框架入门教程之框架使用(一)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(一)
|
30天前
|
容器
【LVGL快速入门】LVGL开源框架入门教程之框架使用(二)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(二)
|
1月前
【LVGL快速入门】SquareLine Studio安装教程(LVGL官方工具)
【LVGL快速入门】SquareLine Studio安装教程(LVGL官方工具)
253 0
|
2月前
|
API 开发工具 Android开发
从安装到打包,手把手教你如何在Uno Platform上部署跨平台应用——一篇详尽的开发者指南
【9月更文挑战第7天】Uno Platform 是一个跨平台应用开发框架,利用UWP API构建Web、iOS、Android等多平台应用。本文详述了安装Uno Platform SDK、配置项目支持跨平台、添加主方法以及使用命令行工具进行应用打包的过程,助您快速上手 Uno Platform 并部署应用。通过简单的代码示例,让开发者轻松掌握从安装到发布的核心步骤。
165 2

热门文章

最新文章