-
1 PlatformIO下載LVGL庫
在PlatformIO庫中直接搜索Lvgl添加到工程
(ps:因為這里下載的v8.1.0版本沒有lv_demos,若需要運行例程可以自己再下載一個,不過注意下載完后需要把lv_demo_conf_template.h改成lv_demo_conf.h,要不然不能編譯)
-
2 修改文件名
lvgl_config_template.h修改為lvgl_config.h
#if 0 改為1
這時候就可以編譯了(否則編譯不了)
-
3 移植顯示驅動
首先添加TFT_eSPI庫
定義彩屏引腳(在User_Setup.h文件里)
剩下的spi引腳是esp32默認的
這里注意如果不接RST將其設為-1、此時一定要把屏幕rst引腳接到高電平3.3V、否則不接為低電平、會一直保持復位狀態、屏幕不亮
配置文件修改
配置文件修改
在User_Setup_Select.h文件中選擇取消注釋你需要的屏幕型號驅動文件
修改此處(我這個彩屏需要、別的也許不需要修改)
(ps:LVGL的長寬設置是橫着來看的,原本TFT庫的是豎着來看的,所以這里長寬需要反過來,當然視具體情況而定)
-
4 移植驅動
參考arduino的例程 位置:\lvgl\examples\arduino\LVGL_Arduino
7735沒有觸屏,測試代碼如下:

1 #include <lvgl.h> 2 #include <TFT_eSPI.h> 3 4 static lv_disp_draw_buf_t draw_buf; //定義顯示器變量 5 static lv_color_t buf[TFT_WIDTH * 10]; //定義刷新緩存 6 7 TFT_eSPI tft = TFT_eSPI(); 8 9 /* Display flushing */ 10 void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) 11 { 12 uint32_t w = (area->x2 - area->x1 + 1); 13 uint32_t h = (area->y2 - area->y1 + 1); 14 15 tft.startWrite(); //使能寫功能 16 tft.setAddrWindow(area->x1, area->y1, w, h); //設置填充區域 17 tft.pushColors((uint16_t *)&color_p->full, w * h, true); //寫入顏色緩存和緩存大小 18 tft.endWrite(); //關閉寫功能 19 20 lv_disp_flush_ready(disp); //調用區域填充顏色函數 21 } 22 23 void setup() 24 { 25 tft.init(); //初始化 26 tft.setRotation(3); 27 lv_init(); 28 lv_disp_draw_buf_init(&draw_buf, buf, NULL, TFT_WIDTH * 10); 29 30 /*Initialize the display*/ 31 static lv_disp_drv_t disp_drv; 32 lv_disp_drv_init(&disp_drv); 33 /*Change the following line to your display resolution*/ 34 disp_drv.hor_res = TFT_WIDTH; 35 disp_drv.ver_res = TFT_HEIGHT; 36 disp_drv.flush_cb = my_disp_flush; 37 disp_drv.draw_buf = &draw_buf; 38 lv_disp_drv_register(&disp_drv); 39 40 lv_obj_t *label = lv_label_create(lv_scr_act()); 41 lv_label_set_text(label, "Hello world!"); 42 lv_obj_align(label, LV_ALIGN_CENTER, 0, 0); 43 } 44 45 void loop() 46 { 47 48 lv_timer_handler(); /* let the GUI do its work */ 49 delay(5); 50 }