LVGL Demo测试
准备
移植好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%的资源占用,效果还是可以的,显示大小还需调整