LVGL Demo测试

发布时间 2023-08-10 18:04:11作者: 阿风小子

准备
移植好lvgl的工程

一、修改  lv_port_disp.c
1、使能 lv_port_disp.c
修改头晚间包含 lv_port_disp_template改为lv_port_disp

 编译报错和警告,没有定义水平MY_DISP_HOR_RES、垂直分辨率MY_DISP_VER_RES和 最大水平分辨率MY_DISP_VER_RES

 通过这里我们可以看到如果我们没有自己定义 水平MY_DISP_HOR_RES、垂直分辨率MY_DISP_VER_RES,编译会警告,并且会提供默认的分辨率

 我们在外面自己定义即可

下面这里提供了三中刷屏方式,我们根据自己的硬件资源选择其中一种方式即可,其中第三种方式用到了MY_DISP_VER_RES 我们如果不用第三种刷新方式选择注释掉即可,我这里选择第二种刷新方式,注释掉第一种和第三种凡事如下,

 因为我们选择第二种,所以我们也要修改 显示buff改为buff2如下

 编译通过

 

 

2、根据实际情况修改  lv_conf.h
1、选RGB565

2、打开帧率和内存占用信息显示

 

 

3、添加自己的屏幕刷新程序如下


 

二、添加心跳到ms中断
1、这个心跳在 lv_hal_tick.c 源文件下,我们把它移到SysTick_Handler 嘀嗒定时器毫秒中断中,也可以自己开一个ms定时器放到定时器中断中

 

三、添加demo程序
1、添加lv_examples.h头文件


 

2、初始化lvgl、lcd、example
/**
 * @brief   初始化lvgl
 */
void user_lvgl_init(void)
{
    lv_init();              // lvgl初始化
    user_lcd_init();        // lcd 硬件初始化     
    lv_port_disp_init();    // 显示初始化  
    lv_example_led_1();     // demo 演示
}
3、将lv_timer_handler()放到死循环中,不断轮询,这里放到rtos线程中
void user_lvgl_task_run(void* pvParameters )
{
    while(1)
    {
        lv_timer_handler();
        vTaskDelay(1);
    }
}
4、lv_conf.h文件配置
a、由于硬件使用的是SPI 宽度为8位传输,所以修改这里,否则异常

b、修改字体大小,由于我的显示屏太小,需要改一下,显示的字体不然显示不下

 

 c、由于我的屏幕太小,还有修改demo程序上的显示位置,不然无法完全显示

,其它箭头的地方也改动一点 

效果,27的FPS ,7%的资源占用,效果还是可以的,显示大小还需调整