【学习笔记】LVGL开源框架的学习记录

一.学习背景

        LVGL是一款开源的嵌入式GUI框架。轻量级和灵活性是其著有的特征。我们在开发如智能手表,仪器表盘时可以采用这个框架。

二.移植LVGL

        在移植之前我们要确保我们的硬件芯片符合移植的要求,以下表为标准:

NameMinimalRecommended
Architecture16, 32 or 64 bit microcontroller or processor
Clock> 16 MHz> 48 MHz
Flash/ROM> 64 kB> 180 kB
Static RAM> 16 kB> 48 kB
Draw buffer> 1 ×hor. res. pixels> 1/10 screen size
CompilerC99 or newer

        首先,要在官方开源地址下下载LVGL的源文件。

        这里给出官方下载链接:GitHub - lvgl/lvgl: Embedded graphics library to create beautiful UIs for any MCU, MPU and display type.

         作为初学者的话我们一般选择V8.3版本的,适用范围广,教程相对多。

        下载解压后我们可以得到:

 

        然后我们在另一个目录下新建一个文件夹,在这个文件夹中复制我们需要移植的一些文件,这里我们只需要以下文件夹:

        同时我们将“lv_conf_template.h”改为“lv_conf.h”和以下地址中的文件后的“_template”也去掉。

更改后如下:

        紧接着我们需要创建一个工程并将LVGL库文件移植进去我们的工程。这里以CubeMX创建的STM32F407VET6的工程为例。

        我们向空工程的文件夹中添加“LVGL”文件夹,并向其中复制我们刚才改好的文件,如下:

                完成以上之后我们就可以开始正式进入Keil配置工程项了,进入工程管理界面,添加以下文件组:

详细解释如下:

文件夹名称 (Groups)用于存放什么文件
LVGL_myGui用户自己的界面代码文件、官方demo等
LVGL_confLVGL 的两个h文件
LVGL_portingLVGL 的接口文件, 如显示、触摸屏、键盘等
LVGL_srcLVGL 的所有底层c文件

 完成后最好编译一下以免有错误。

注意以下为最重要的步骤,向刚才创建的工程组中分别添加文件,具体如下:

文件
LVGL_myGUI个人文件,暂不需添加。
LVGL_confLVGL根目录中的lv_conf.h、lvgl.h
LVGL_portingLVGL/ examples / porting中的“lv_port_disp.c 、lv_port_disp.h、 lv_port_indev.c、lv_port_indev.h
LVGL_srcLVGL/ src目录下的所有.c文件(注意:这里是所有.c文件,包括所有子目录下的和src根目录下的)(笔者数了一下,大概是201个,读者可自己数一下)

添加完以后如下(src未展示完全):

下一步,注意将C99勾选上

向头文件中添加这几个文件夹:

此时可以再编译一次,若没有错误则算成功。

接着要完成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*/


                                                                                                                       若有错误,感谢指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值