1. 实体按键控制(了解)

使用按键控制用户界面,需要将所控制的部件添加到组中,并将按键和组关联起来。
img
注意:某些部件默认加入到组(默认组),无需再单独添加。

配置步骤1:配置输入

  1. 准备《LVGL例程31 lv_list(列表)》例程,修改名称为《实体按键控制课堂代码》
  2. 在lv_port_indev_template.c中包含头文件:#include "./BSP/KEY/key.h"
  3. 取消“键盘”相关代码的注释,初始化按键:key_init();
  4. 扫描按键:key_scan(0);
  5. 根据部件指定按键功能

配置步骤2:配置“组(group)”

  1. 创建组:lv_group_t *g = lv_group_create();
  2. 设置默认组:lv_group_set_default(g);------如果部件已加入默认组,使用这种配置
  3. 添加部件到组:lv_group_add_obj(g, obj);------如果部件未加入默认组,使用这种配置
  4. 关联按键和组:lv_indev_set_group(indev_keypad, g);

2. 文件系统移植(了解)

移植前准备:

  1. 《LVGL例程2 操作系统移植》源码
  2. HAL库版本《FATFS实验》源码
  3. LVGL实验所需SD卡文件、SD卡

移植步骤1

  1. 将《 LVGL实验所需SD卡文件》中的文件复制到SD卡根目录,并将SD卡插到开发板
  2. 将LVGL例程2重命名为《文件系统移植课堂代码》
  3. 按以下结构移植文件夹:
    img
    注意:不同系列的开发板,BSP文件夹中的所需要移植的驱动文件不一定相同。

移植步骤2

  1. 打开《文件系统移植课堂代码》工程,编译。点击"文件"图标,添加分组、文件:
    img
    注意:不同系列的开发板,BSP、HAL_Driver分组中所需要添加的文件不一定相同。

移植步骤3

  1. 添加头文件路径:

    ....\Middlewares\FATFS\exfuns

    ....\Middlewares\FATFS\source
  2. 打开 lv_conf.h 文件,将宏定义LV_USE_FS_FATFS修改为1 ,LV_FS_FATFS_LETTER修改为'0'
  3. 打开 lv_fs_fatfs.c 文件,包含头文件,修改fs_init函数,具体如下:
    img
#include "./BSP/SDIO/sdio_sdcard.h"
#include "./FATFS/exfuns/exfuns.h"
while(sd_init())               /* 初始化 SD 卡 */    
{        
     printf("SD Card Error, Please Check!\r\n");       
     HAL_Delay(200);    
}         
exfuns_init();                   /* 为 fatfs 相关变量申请内存 */
f_mount(fs[0], "0:", 1);    /* 挂载 SD 卡 */

移植步骤4

  1. 打开 lv_demo_stress.c 文件,包含头文件,编写测试代码,具体如下:
#include "lvgl.h"
#include <stdio.h>

void lv_demo_stress(void)
{
    uint32_t read_num = 0;
    uint8_t buf[30] = {0};
    lv_fs_file_t f;
    lv_fs_res_t res;
    res = lv_fs_open(&f, "0:/SYSTEM/LV_FATFS/Fatfs_test.txt", LV_FS_MODE_RD);
    if(res != LV_FS_RES_OK)    printf("Open failed");
    res = lv_fs_read(&f, buf, 30, &read_num);
    if(res != LV_FS_RES_OK)    printf("Read failed");
    printf("实际读取长度:%d字节, %s",read_num , buf);
    lv_fs_close(&f);
}

3,中文字库应用(了解)

准备工作:

  1. 《LVGL例程18 lv_label(标签)》源码
  2. 需要使用的字体文件(ttf、otf等格式)
  3. 登录在线字体转换网站:https://lvgl.io/tools/fontconverter

根据需求将字体文件转换为C语言数组

img

添加字库文件到LVGL工程中,声明字体,编写测试代码

LV_FONT_DECLARE(Font30)       /* 声明字体 */

void my_gui(void)
{
    lv_obj_t *font_label = lv_label_create(lv_scr_act());
    lv_obj_set_style_text_font(font_label, &Font30, LV_STATE_DEFAULT);
    lv_label_set_text(font_label, "你好,正点原子");
    lv_obj_center(font_label);
}