【esp32 學習筆記】將lvgl融入esp-idf專案中

FBshark發表於2024-07-02

lvgl科普

lvgl 主要特點:

【esp32 學習筆記】將lvgl融入esp-idf專案中

Github庫整體瞭解

【esp32 學習筆記】將lvgl融入esp-idf專案中

版本號編排原則

【esp32 學習筆記】將lvgl融入esp-idf專案中

【esp32 學習筆記】將lvgl融入esp-idf專案中

螢幕相容性

【esp32 學習筆記】將lvgl融入esp-idf專案中

LVGL 問題處理:

【esp32 學習筆記】將lvgl融入esp-idf專案中

lvgl 與 FreeRTOS

由於esp-idf本身帶了 FreeRTOS系統,因此需要關注一下作業系統相關的內容:

【esp32 學習筆記】將lvgl融入esp-idf專案中

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() 兩個函式

相關文章