国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ESP32在ESP-IDF框架下使用LVGL(v8.3)

這篇具有很好參考價值的文章主要介紹了ESP32在ESP-IDF框架下使用LVGL(v8.3)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

開發(fā)環(huán)境

VSCode+ESP-IDF插件
說明:IDF版本為4.4.4,最新版的5.0.1棄用了些東西,而lvgl_esp32_drivers對5以上的版本未適配,所以不建議使用5以上的版本。
安裝:安裝教程,建議整體看完在進行安裝,以免安裝失敗,教程安裝的是5.0.1,需要改為4.4.4。
Arduino移植教程:點擊此處

加載庫

lvgl:github下載地址,選擇8.3版本。
lvgl_esp32_driver:gihub下載地址
說明:將兩個壓縮包解壓,將lvgl-release-v8.3重命名為lvgl,lvgl_esp32_drivers_master重命名為lvgl_esp32_drivers,新建ESP-IDF項目,在根目錄下創(chuàng)建components文件夾,并將上面兩個文件夾放入components文件夾中。
操作:clean一下項目,重新build一下項目,此時界面下方導航欄齒輪按鈕(SDK Configuration editor)中會生成lvgl和驅動相關的配置。首次編譯會出現如下錯誤:

錯誤一:
lvgl_helpers.h:58:25: error: 'LV_HOR_RES_MAX' undeclared (first use in this 
function); did you mean 'LV_HOR_RES'?
解決方法:
ctrl+鼠標左鍵,選中上述錯誤語句,找到錯誤文件lvgl_helpers.h;在給文件的第25行插入下面兩個定義,需要根據自己的屏幕尺寸修改。
#define LV_HOR_RES_MAX 240
#define LV_VER_RES_MAX 320

錯誤二:
lvgl_helpers.c:159:9: error: 'SPI_HOST_MAX' undeclared (first use in this function); did you mean 'GPIO_PORT_MAX'?
解決方法:
還是上面的文件中,添加如下定義
#define SPI_HOST_MAX 3

lvgl_esp32_drivers配置

屏幕:st7789 240*320 2.8寸屏幕,屏幕接線方式如下。

ESP32引腳 屏幕引腳
13 MOSI
14 SCK
15 CS
2 DC
EN 或 RST RST
未接 MISO
VCC BL/LED(背光)

點解VSCode界面下方導航欄齒輪按鈕,抖索 Display Pin Assigments 配置如下:

ESP32在ESP-IDF框架下使用LVGL(v8.3)

測試

下面的程序,根據lvgl_port_esp32主程序修改而來。
打開齒輪按鈕,使能一個lvgl示例,如下使能Benchmark your system,并將下面代碼直接覆蓋原來的主程序。如果你想測試其它示例,可以在下面中文注釋下面,調用ui部分的邏輯代碼即可。
ESP32在ESP-IDF框架下使用LVGL(v8.3)

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_freertos_hooks.h"
#include "freertos/semphr.h"
#include "esp_system.h"
#include "driver/gpio.h"
#include "lvgl/lvgl.h"
#include "lvgl_helpers.h"
#include <lv_demos.h>
/*********************
 *      DEFINES
 *********************/
#define TAG "demo"
#define LV_TICK_PERIOD_MS 1

/**********************
 *  STATIC PROTOTYPES
 **********************/
static void lv_tick_task(void *arg);
static void guiTask(void *pvParameter);
static void create_demo_application(void);

/**********************
 *   APPLICATION MAIN
 **********************/
void app_main() {

    
    xTaskCreatePinnedToCore(guiTask, "gui", 4096*2, NULL, 0, NULL, 1);
}

SemaphoreHandle_t xGuiSemaphore;

static void guiTask(void *pvParameter) {

    (void) pvParameter;
    xGuiSemaphore = xSemaphoreCreateMutex();
    lv_init();
    lvgl_driver_init();
    lv_color_t* buf1 = heap_caps_malloc(DISP_BUF_SIZE * sizeof(lv_color_t), MALLOC_CAP_DMA);
    assert(buf1 != NULL);
    static lv_color_t *buf2 = NULL;
    static lv_disp_draw_buf_t disp_buf;
    uint32_t size_in_px = DISP_BUF_SIZE;
    lv_disp_draw_buf_init(&disp_buf, buf1, buf2, size_in_px);
    lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.flush_cb = disp_driver_flush;
    disp_drv.draw_buf = &disp_buf;
    lv_disp_drv_register(&disp_drv);
    const esp_timer_create_args_t periodic_timer_args = {
        .callback = &lv_tick_task,
        .name = "periodic_gui"
    };
    esp_timer_handle_t periodic_timer;
    ESP_ERROR_CHECK(esp_timer_create(&periodic_timer_args, &periodic_timer));
    ESP_ERROR_CHECK(esp_timer_start_periodic(periodic_timer, LV_TICK_PERIOD_MS * 1000));
    /* 在這里更換自己的UI */
    lv_demo_benchmark();
    while (1) {
        /* Delay 1 tick (assumes FreeRTOS tick is 10ms */
        vTaskDelay(pdMS_TO_TICKS(10));

        /* Try to take the semaphore, call lvgl related function on success */
        if (pdTRUE == xSemaphoreTake(xGuiSemaphore, portMAX_DELAY)) {
            lv_task_handler();
            xSemaphoreGive(xGuiSemaphore);
       }
    }
    /* A task should NEVER return */
    free(buf1);
    vTaskDelete(NULL);
}

static void lv_tick_task(void *arg) {
    (void) arg;
    lv_tick_inc(LV_TICK_PERIOD_MS);
}

上面程序是在lvgl_port_esp32的主程序修改而來,源程序直接運行會報下圖中的錯誤,需要將lv_disp_buf_t修改為lv_disp_draw_buf_t,lv_disp_buf_init修改為lv_disp_draw_buf_init,將 disp_drv.buffer修改為disp_drv.draw_buf。除此以外,刪除了一些沒用的#if、#endif等內容,讓程序看起來比較簡潔。
ESP32在ESP-IDF框架下使用LVGL(v8.3)

雖然編譯通過了,但對于合宙的esp32s3來說還是沒有畫面顯示。需要將lvgl_helpers.c的第180行,修改成如下代碼,如果是其它芯片比如ESP32S2等,也要做相應的修改,網上有相關的教程。

 #if defined (CONFIG_IDF_TARGET_ESP32C3)|| defined (CONFIG_IDF_TARGET_ESP32S3)
    dma_channel = SPI_DMA_CH_AUTO;
 #endif

編寫自己的UI界面

使用軟件SquareLine Studio,版本1.2.2,該版本支持LVGL 8.2.0、8.3.3、8.3.4
1、設置屏幕尺寸,具體參數如下,注意紅框內的內容。
ESP32在ESP-IDF框架下使用LVGL(v8.3)
2、隨便拖拽兩個控件。選擇Export->Export UI Files,會導出.c和.h文件。
3、在VScode中使用ctrl+shift+p,選擇ESP-IDF:創(chuàng)建新的ESP-IDF組件,輸入組件文件夾的名字(例如:my_ui)
.h頭文件放在include文件夾中,將其它.c文件放在include文件夾之外。
4、將下面CMakeList.txt文件中的內容覆蓋原來生成的CMakeList.txt文件??蓮椭葡旅娴腸程序中的內容。否則,ui界面相關的程序不會得到編譯。
ESP32在ESP-IDF框架下使用LVGL(v8.3)
5、在main.c文件中#include<ui.h>,在上面完整代碼中文注釋下面一行調用ui_init()函數。
6、將SDK Configuration editor的下面選項選中。
ESP32在ESP-IDF框架下使用LVGL(v8.3)
7、編譯、下載。
8、設計圖、與運行結果如下所示。

file(GLOB_RECURSE SOURCES 	./*.c )
idf_component_register(SRCS ${SOURCES}
                    INCLUDE_DIRS "include"
                    REQUIRES lvgl)

ESP32在ESP-IDF框架下使用LVGL(v8.3)

ESP32在ESP-IDF框架下使用LVGL(v8.3)文章來源地址http://www.zghlxwxcb.cn/news/detail-415212.html

到了這里,關于ESP32在ESP-IDF框架下使用LVGL(v8.3)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • vscode+esp-idf 搭建esp32開發(fā)環(huán)境,編譯信息中文亂碼

    vscode+esp-idf 搭建esp32開發(fā)環(huán)境,編譯信息中文亂碼

    1.修改波特率 2.C:UsersAdministrator.vscodeextensionsvsciot-vscode.vscode-arduino-0.6.0-win32-x64outsrccommon ?打開文件 util.js 屏蔽掉這部分的代碼 、 ?

    2024年02月10日
    瀏覽(23)
  • 使用一鍵安裝工具快速搭建 ESP-IDF 開發(fā)環(huán)境 (Windows)

    使用一鍵安裝工具快速搭建 ESP-IDF 開發(fā)環(huán)境 (Windows)

    我們收到用戶對 ESP-IDF SDK 軟件開發(fā)環(huán)境感到搭建難、門檻高的反饋。為解決用戶在此方面的問題。為此,我們推出本期教程介紹在 Windows 操作系統(tǒng)下使用一鍵安裝工具快速搭建 ESP-IDF 開發(fā)環(huán)境。 您可以觀看下面的教程視頻,也可以閱讀接下來本篇的圖文教程。 【樂鑫教程】

    2024年02月09日
    瀏覽(29)
  • 使用 VS Code 快速搭建 ESP-IDF 開發(fā)環(huán)境 (Windows、Linux、MacOS)

    使用 VS Code 快速搭建 ESP-IDF 開發(fā)環(huán)境 (Windows、Linux、MacOS)

    ESP-IDF 是樂鑫官方的物聯(lián)網開發(fā)框架,適用于 ESP32、ESP32-S、ESP32-C 和 ESP32-H 系列 SoC。它基于 C/C++ 語言提供了一個自給自足的 SDK,方便用戶在這些平臺上開發(fā)通用應用程序,并集成了大量的軟件組件,包括 RTOS、外設驅動程序、網絡棧、多種協(xié)議實現技術以及常見應用程序的使

    2024年02月14日
    瀏覽(29)
  • ESP32在Arduino框架下采用SPI或8bit并口方式使用LVGL(v8.3)

    ESP32在Arduino框架下采用SPI或8bit并口方式使用LVGL(v8.3)

    小相機,按一下能拍照,并將照片保存在sd卡中。 使用的時VSCode+PlatformIO進行開發(fā)(強力推薦,用了就回不去了),當然也可以使用ArduinoIDE進行開發(fā)。 具體怎么使用上述軟件,網上有很多答案,可以自行查找。 ESP-IDF移植教程:點擊這里 使用到的庫: TFT_eSPI 和 lvgl 注: 8bi

    2024年02月05日
    瀏覽(43)
  • VSCode安裝Esp-IDF開發(fā)環(huán)境(pip version)出錯解決辦法

    VSCode安裝Esp-IDF開發(fā)環(huán)境(pip version)出錯解決辦法

    可以看出是 pip版本問題 ,所以只需要在安裝程序使用pip命令之前,完成pip的升級即可。 好像下載4點幾的版本會出現此警告,導致安裝失敗;而下面安裝5.0.1版本的時候同樣出現了此警告,但是能夠安裝成功。 在VSCode擴展中找到Esp-IDF插件,點擊卸載按鈕。 注意:此時并沒有

    2024年02月08日
    瀏覽(26)
  • 【ESP32填坑日記】環(huán)境篇① 一站式VScode+ESP-IDF搭建教程,附帶Python出錯填坑經驗

    【ESP32填坑日記】環(huán)境篇① 一站式VScode+ESP-IDF搭建教程,附帶Python出錯填坑經驗

    VScode+ESP-IDF開發(fā)環(huán)境搭建教程,附帶Python和Git安裝教程、安裝出錯踩坑經驗、最新版安裝包,文末附帶神奇的免安裝版!! 巨詳細一站式VScode+ESP-IDF的開發(fā)環(huán)境搭建教程,附帶Python和Git安裝教程、安裝出錯踩坑經驗,以及免安裝版,小白跟我無腦操作也能一次點亮,文章最后附最

    2024年02月04日
    瀏覽(27)
  • 巨詳細一站式VScode+ESP-IDF開發(fā)環(huán)境搭建教程,附帶Python和Git安裝教程、安裝出錯踩坑經驗

    巨詳細一站式VScode+ESP-IDF開發(fā)環(huán)境搭建教程,附帶Python和Git安裝教程、安裝出錯踩坑經驗

    VScode+ESP-IDF開發(fā)環(huán)境搭建教程,附帶Python和Git安裝教程、安裝出錯踩坑經驗、最新版安裝包,文末附帶神奇的免安裝版!! 巨詳細一站式VScode+ESP-IDF的開發(fā)環(huán)境搭建教程,附帶Python和Git安裝教程、安裝出錯踩坑經驗,以及免安裝版,小白跟我無腦操作也能一次點亮,文章最后附最

    2024年02月16日
    瀏覽(24)
  • 【ESP32】Espressif-IDE及ESP-IDF安裝

    【ESP32】Espressif-IDE及ESP-IDF安裝

    1.打開ESP-IDF 編程指南 2.點擊快速入門–安裝–手動安裝–Windows Installer–Windows Installer Download 3.點擊下載Espressif-IDE 2.10.0 with ESP-IDF v5.0.2 1.雙擊安裝 espressif-ide-setup-2.10.0-with-esp-idf-5.0.2.exe 2.點擊“確定” 3.選擇“我同意此協(xié)議(A)”,點擊“下一步” 4.點擊“下一步” 5.點擊“

    2024年02月15日
    瀏覽(30)
  • 利用群暉服務器安裝樂鑫ESP-IDF編譯環(huán)境

    利用群暉服務器安裝樂鑫ESP-IDF編譯環(huán)境

    NAS內通過套件中心下載Docker并安裝ubuntu容器 打開Docker后進入注冊表搜索ubuntu20.04選擇第一個就可以(其余版本未進行測試) 等待安裝成功后點擊映像可查看 點擊啟動按鈕后為容器命名,點擊高級設置中的存儲空間可在NAS本地創(chuàng)建一個文件夾(便于后續(xù)搭建完成后與本地交互) 點擊

    2023年04月17日
    瀏覽(20)
  • ESP32接入網絡后,循環(huán)掃描服務器IP及端口狀態(tài)信息(ESP-IDF)

    ESP32接入網絡后,循環(huán)掃描服務器IP及端口狀態(tài)信息(ESP-IDF)

    ????????本文使用的是ESP32系列的ESP32S3設備開發(fā),ESP-IDF框架版本為 ESP-IDF V5.1 ,在VScode下以ESP-IDF插件的形式對設備開發(fā)。 后期經過對程序的測試發(fā)現,在ESP-IDF v4.4框架下編譯開發(fā),也可以實現循環(huán)掃描功能,實現功能的程序源碼Demo見文末。 ????????在嵌入式物聯(lián)網這

    2024年02月02日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包