【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的基础功能就移植完成了。

相关文章
|
传感器 XML 消息中间件
Qt开发技术:mqtt介绍、QtMqtt编译和开发环境搭建
Qt开发技术:mqtt介绍、QtMqtt编译和开发环境搭建
Qt开发技术:mqtt介绍、QtMqtt编译和开发环境搭建
|
2月前
【LVGL快速入门】LVGL开源框架入门教程之框架使用(三)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(三)
101 1
【LVGL快速入门】LVGL开源框架入门教程之框架使用(三)
|
2月前
|
调度
【LVGL快速入门】LVGL开源框架入门教程之框架移植(四)
【LVGL快速入门】LVGL开源框架入门教程之框架移植(四)
124 3
|
2月前
【LVGL快速入门】LVGL开源框架入门教程之框架移植(三)
【LVGL快速入门】LVGL开源框架入门教程之框架移植(三)
|
2月前
|
C语言 图形学 芯片
【LVGL快速入门】LVGL开源框架入门教程之框架移植(一)
LVGL开源框架入门教程之框架移植(一)
603 2
|
2月前
【LVGL快速入门】LVGL开源框架入门教程之框架使用(一)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(一)
145 1
|
2月前
|
容器
【LVGL快速入门】LVGL开源框架入门教程之框架使用(二)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(二)
113 1
|
2月前
【LVGL快速入门】SquareLine Studio安装教程(LVGL官方工具)
【LVGL快速入门】SquareLine Studio安装教程(LVGL官方工具)
484 0
|
4月前
|
开发工具 图形学 Android开发
从零开始的unity3d入门教程(一)----环境配置
该文章是《从零开始的Unity3D入门教程》系列的第一篇,详细介绍了Unity3D的环境配置过程,包括注册Unity账户、下载安装Unity Hub和Unity编辑器、配置许可证、创建Unity项目、下载安装Visual Studio 2022以及将Unity与Visual Studio相关联等步骤。
从零开始的unity3d入门教程(一)----环境配置
|
4月前
|
定位技术 C# 图形学
从零开始的unity3d入门教程(二)----基本功能讲解
这是一篇Unity3D入门教程,详细介绍了Unity界面操作、游戏物体创建修改、场景搭建、玩家控制、音效添加以及游戏测试和导出的全过程。
从零开始的unity3d入门教程(二)----基本功能讲解

热门文章

最新文章

下一篇
DataWorks