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

RT-Thread記錄(二、RT-Thread內(nèi)核啟動(dòng)流程)

RT-Thread NUC97x 移植 LVGL
RT-Thread Studio使用記錄資料匯總
在基于PC的RT-Thread模擬器上搭建LVGL圖形庫(kù)
RT-Thread編程指南
RT-Thread Smart已正式上線(xiàn)
記錄——基于 RT-Thread 實(shí)現(xiàn) USB 虛擬串口

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

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

基于RT-Thread Studio學(xué)習(xí)

評(píng)論