LVGL(輕巧而多功能的圖形庫)是一個免費的開放源代碼圖形庫,它提供創建具有易于使用的圖形元素,精美的視覺效果和低內存占用的嵌入式GUI所需的一切。
RT-Thread 目前已經支持 LVGL,4.1.1 版本之后(含4.1.1)移植 LVGL 的時候,只需要完善lv_conf.h 、lv_port_disp.c、 lv_port_indev.c 這三個文件即可,這三個文件的作用在后面介紹。
開始移植之前,需要檢查使用的顯示和輸入設備是否已經有驅動支持,如果沒有驅動支持的話需要自行對接,不對接到 RT-Thread 的設備框架,直接驅動也是可以的。
準備工作
這里默認顯示和觸摸的驅動已經沒有問題,這次移植我使用的觸摸屏顯示芯片為 st7796 ,觸摸芯片為 gt911 。
首先可以直接復制一個已經對接好的 LVGL 文件作為模板,再在此基礎上進行修改,例如 rt-thread-masterbspstm32stm32l475-atk-pandoraapplicationslvgl ,結合板卡情況修改其中的lv_conf.h 、lv_port_disp.c、 lv_port_indev.c 三個文件即可, SConscript 自行按需修改。
LVGL 配置文件
lv_conf.h 為 lVGL 配置文件,其中需要配置一些顯示器的主要參數,移植時至少要配置好一下三個選項
LV_HOR_RES_MAX 顯示器的水平分辨率。
LV_VER_RES_MAX 顯示器的垂直分辨率。
LV_COLOR_DEPTH 顏色深度,其取值對應如下:
8 - RG332
16 - RGB565
32 - (RGB888和ARGB8888)
對接顯示接口
在lv_port_disp.c中對接 LVGL 的顯示接口,根據已有的模板,最重要的是對接以下接口
/*Flush the content of the internal buffer the specific area on the display
You can use DMA or any hardware acceleration to do this operation in the background but
'lv_disp_flush_ready()' has to be called when finished. /
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
/ color_p is a buffer pointer; the buffer is provided by LVGL */
//在這里填入對應顯示驅動的加載接口
//示例:
//lcd_load(area->x1, area->x2, area->y1, area->y2, color_p);
/*IMPORTANT!!!
Inform the graphics library that you are ready with the flushing /
lv_disp_flush_ready(disp_drv);
}
在注釋的地方填入自己顯示驅動的對應接口即可,需要注意傳入的參數順序和類型。
還需要初始化 lv_disp_buf_t 和 lv_disp_drv_t 變量,
對接觸摸輸入接口
在lv_port_indev.c中對接 LVGL 的輸入接口,LVGL 支持多種類型的輸入設備,例如觸摸,鍵盤,編碼器等,我這里使用的是觸摸類型。
輸入接口必須初始化 lv_indev_drv_t 變量,最重要的是實現其 read_cb 回調函數,從而獲取觸摸信息。其余具體配置可以查看:Input device interface — LVGL documentation
對接完成以后,記得檢查 Kconfig 以及 scons 的相關配置。可以運行 demo 進行測試基本功能,例如觸摸點是否準確,點擊滑動等是否正常,顯示刷新是否正常等。
需要提醒大家注意的一個點:確保觸摸和顯示的坐標是否對應。
可以看出只要顯示和輸入設備的驅動沒有問題,對接 LVGL 是很快的。那么行動起來,讓 LVGL 運行起來吧!
-
觸摸屏
+關注
關注
42文章
2318瀏覽量
116794 -
RT-Thread
+關注
關注
31文章
1305瀏覽量
40406 -
STM32L4
+關注
關注
1文章
42瀏覽量
9436 -
RGB屏
+關注
關注
0文章
9瀏覽量
1213 -
LVGL
+關注
關注
1文章
91瀏覽量
3096
發布評論請先 登錄
相關推薦
RT-Thread NUC97x 移植 LVGL
RT-Thread Studio使用記錄資料匯總
在基于PC的RT-Thread模擬器上搭建LVGL圖形庫
RT-Thread編程指南
RT-Thread Smart已正式上線
記錄——基于 RT-Thread 實現 USB 虛擬串口
![<b class='flag-5'>記錄</b>——基于 <b class='flag-5'>RT-Thread</b> 實現 USB 虛擬串口](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RT-Thread學習筆記 RT-Thread的架構概述
![<b class='flag-5'>RT-Thread</b>學習筆記 <b class='flag-5'>RT-Thread</b>的架構概述](https://file.elecfans.com/web2/M00/52/31/pYYBAGLKk5WAA__jAADjdAdXhIs410.jpg)
RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
![<b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論