【esp32 学习笔记】将 lvgl 融入esp-idf项目中

lvgl科普

lvgl 主要特点:

Github库整体了解

版本号编排原则

屏幕兼容性

LVGL  问题处理:

 

lvgl 与 FreeRTOS

由于esp-idf本身带了 FreeRTOS系统,因此需要关注一下操作系统相关的内容:

void lvgl_thread(void)
{
    while(1) {
        uint32_t time_till_next;
        time_till_next = lv_timer_handler(); /*lv_lock/lv_unlock is called internally*/
        thread_sleep(time_till_next); /* sleep for a while */
    }
}

void other_thread(void)
{
    /* You must always hold the mutex while using LVGL APIs */
    lv_lock();
    lv_obj_t *img = lv_image_create(lv_screen_active());
    lv_unlock();

    while(1) {
        lv_lock();
        /* change to the next image */
        lv_image_set_src(img, next_image);
        lv_unlock();
        thread_sleep(2000);
    }
}

以上的内容,总结一下:

1. 如果要用到操作系统,LV_USE_OS宏定义应该被设置。

2. 每当在其他线程(不是 lv_timer_handler() 函数所在的线程 )使用lvgl函数的时候,在其之前使用 lv_lock() lv_unlock() 两个函数

lvgl的例程

esp-idf的官方例程(i2c_oled)当中用到了 lvgl,在yml文件中看到依赖三个相关esp32组件

首先,进行sdkconfig,修改以下选项:

  • XTAL频率修改,修改为26MHz。
  • 默认字体修改,搜索框搜索font,选择12px的 Montserrat(lvgl自带的字体)(选10px的字体在0.96"OLED上看不清,选14px的字又太大,12px刚刚好)

 

 

posted @ 2024-07-02 21:16  FBshark  阅读(6)  评论(0编辑  收藏  举报