专业的编程技术博客社区

网站首页 > 博客文章 正文

LVGL,解决画面切换慢的问题(lvgl画面好卡)

baijin 2025-01-31 11:49:10 博客文章 12 ℃ 0 评论

在Linux嵌入式设备上,界面滚动和tabview页签切换时,画面就像慢动作,定位是和LVGL的心跳设置有关:

改动前在main函数里是这样的,使用lv_tick_inc(5);作为心跳,这样的话,会影响心跳效果,数值不准确

/*Handle LitlevGL tasks (tickless mode)*/

while(1) {

lv_tick_inc(5);

lv_task_handler();

usleep(5000);

}

需要自定义自己的心跳函数:

/*Set in lv_conf.h as `LV_TICK_CUSTOM_SYS_TIME_EXPR`*/

uint32_t custom_tick_get(void)

{

static uint64_t start_ms = 0;

if(start_ms == 0) {

struct timeval tv_start;

gettimeofday(&tv_start, NULL);

start_ms = (tv_start.tv_sec * 1000000 + tv_start.tv_usec) / 1000;

}
struct timeval tv_now;

gettimeofday(&tv_now, NULL);

uint64_t now_ms;

now_ms = (tv_now.tv_sec * 1000000 + tv_now.tv_usec) / 1000;
uint32_t time_ms = now_ms - start_ms;

return time_ms;

}

然后在lv.conf.h里要使能:

uint32_t custom_tick_get(void);

#define LV_TICK_CUSTOM 1

#if LV_TICK_CUSTOM

#define LV_TICK_CUSTOM_INCLUDE <stdint.h> /*Header for the system time function*/

#define LV_TICK_CUSTOM_SYS_TIME_EXPR (custom_tick_get()) /*Expression evaluating to current system time in ms*/

#endif /*LV_TICK_CUSTOM*/

这样修改完后,显示效果就很快,很流畅了。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表