LVGL(輕巧而多功能的圖形庫)是一個免費的開放源代碼圖形庫,它提供創(chuàng)建具有易于使用的圖形元素,精美的視覺效果和低內(nèi)存占用的嵌入式GUI所需的一切。
RT-Thread 目前已經(jīng)支持 LVGL,4.1.1 版本之后(含4.1.1)移植 LVGL 的時候,只需要完善lv_conf.h 、lv_port_disp.c、 lv_port_indev.c 這三個文件即可,這三個文件的作用在后面介紹。
開始移植之前,需要檢查使用的顯示和輸入設備是否已經(jīng)有驅(qū)動支持,如果沒有驅(qū)動支持的話需要自行對接,不對接到 RT-Thread 的設備框架,直接驅(qū)動也是可以的。
準備工作
這里默認顯示和觸摸的驅(qū)動已經(jīng)沒有問題,這次移植我使用的觸摸屏顯示芯片為 st7796 ,觸摸芯片為 gt911 。
首先可以直接復制一個已經(jīng)對接好的 LVGL 文件作為模板,再在此基礎上進行修改,例如 rt-thread-masterbspstm32stm32l475-atk-pandoraapplicationslvgl ,結(jié)合板卡情況修改其中的lv_conf.h 、lv_port_disp.c、 lv_port_indev.c 三個文件即可, SConscript 自行按需修改。
LVGL 配置文件
lv_conf.h 為 lVGL 配置文件,其中需要配置一些顯示器的主要參數(shù),移植時至少要配置好一下三個選項
LV_HOR_RES_MAX 顯示器的水平分辨率。
LV_VER_RES_MAX 顯示器的垂直分辨率。
LV_COLOR_DEPTH 顏色深度,其取值對應如下:
8 - RG332
16 - RGB565
32 - (RGB888和ARGB8888)
對接顯示接口
在lv_port_disp.c中對接 LVGL 的顯示接口,根據(jù)已有的模板,最重要的是對接以下接口
/*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 */
//在這里填入對應顯示驅(qū)動的加載接口
//示例:
//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);
}
在注釋的地方填入自己顯示驅(qū)動的對應接口即可,需要注意傳入的參數(shù)順序和類型。
還需要初始化 lv_disp_buf_t 和 lv_disp_drv_t 變量,
對接觸摸輸入接口
在lv_port_indev.c中對接 LVGL 的輸入接口,LVGL 支持多種類型的輸入設備,例如觸摸,鍵盤,編碼器等,我這里使用的是觸摸類型。
輸入接口必須初始化 lv_indev_drv_t 變量,最重要的是實現(xiàn)其 read_cb 回調(diào)函數(shù),從而獲取觸摸信息。其余具體配置可以查看:Input device interface — LVGL documentation
對接完成以后,記得檢查 Kconfig 以及 scons 的相關(guān)配置??梢赃\行 demo 進行測試基本功能,例如觸摸點是否準確,點擊滑動等是否正常,顯示刷新是否正常等。
需要提醒大家注意的一個點:確保觸摸和顯示的坐標是否對應。
可以看出只要顯示和輸入設備的驅(qū)動沒有問題,對接 LVGL 是很快的。那么行動起來,讓 LVGL 運行起來吧!
-
觸摸屏
+關(guān)注
關(guān)注
42文章
2369瀏覽量
118172 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1376瀏覽量
41611 -
STM32L4
+關(guān)注
關(guān)注
1文章
42瀏覽量
9624 -
RGB屏
+關(guān)注
關(guān)注
0文章
9瀏覽量
1284 -
LVGL
+關(guān)注
關(guān)注
1文章
102瀏覽量
3581
發(fā)布評論請先 登錄
RT-Thread NUC97x 移植 LVGL
RT-Thread Studio使用記錄資料匯總
在基于PC的RT-Thread模擬器上搭建LVGL圖形庫
RT-Thread編程指南
RT-Thread Smart已正式上線
記錄——基于 RT-Thread 實現(xiàn) USB 虛擬串口

RT-Thread學習筆記 RT-Thread的架構(gòu)概述

RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

評論