第12章 LVGL開發(fā)入門
12.1 LVGL開發(fā)簡介
12.1.1 LVGL介紹
LVGL(Light and Versatile Graphics Library)是一個開源的嵌入式圖形庫,由Gábor Kiss-Vámosi于2016年創(chuàng)建,遵守MIT協(xié)議。目前由來自世界各地的志愿者共同維護和開發(fā)。
LVGL
LVGL具有輕量級、多功能、靈活和可移植等特點,可以幫助開發(fā)者快速和方便地創(chuàng)建美觀和功能豐富的GUI。LVGL適用于各種嵌入式平臺,并且支持多種操作系統(tǒng),例如Linux、Windows、RTOS等,可運行于多種硬件板卡上。LVGL還支持多種不同分辨率的顯示器、多種接口的觸摸屏。LVGL還提供了多種語言的綁定,例如Python、Micropython、JavaScript等,并提供多種開發(fā)工具,例如模擬器、視覺化設(shè)計器、字體轉(zhuǎn)換器等。
LVGL支持多種控件:圓弧、動畫圖像、進度條、按鈕、按鈕矩陣、日歷、圖表、畫布、復(fù)選框、下拉列表、圖象、圖像按鈕、鍵盤、標(biāo)簽、線條、菜單、消息框、滾輪、標(biāo)尺、滑動條、跨度、旋轉(zhuǎn)框、旋轉(zhuǎn)器、開關(guān)、表、文本框、平鋪視圖、窗口等。使用LVGL可以制作風(fēng)格多樣的界面,比如:
12.1.2 LVGL內(nèi)部機制
使用LVGL創(chuàng)建出各個圖標(biāo)并在屏幕上顯示之后,以按鈕圖標(biāo)為例,它如何及時地響應(yīng)用戶的點擊操作?以溫濕度圖標(biāo)為例,如何及時地更新它的數(shù)據(jù)?LVGL使用“timer”來實現(xiàn)。
操作圖標(biāo)時,要先點擊觸摸屏。我們會為觸摸屏創(chuàng)建一個輸入設(shè)備(“l(fā)v_indev_t”),并為它創(chuàng)建一個timer,通過這個timer周期性地讀取鼠標(biāo)的輸入數(shù)據(jù)。以“packagesLVGL-v8.3.11 estssrclv_test_init.c”為例,注冊鼠標(biāo)設(shè)備時,內(nèi)部注冊了一個timer:
LVGL的主循環(huán)會周期性地調(diào)用上述的“l(fā)v_indev_read_timer_cb”函數(shù),它里面將調(diào)用“l(fā)v_test_mouse_read_cb”得到鼠標(biāo)數(shù)據(jù),然后發(fā)送給被選中的圖標(biāo)。
假設(shè)有圖標(biāo)被用來顯示溫濕度值,我們也會為這個圖標(biāo)添加一個timer,通過這個timer周期性地讀取溫濕度值并更新圖標(biāo)。比如:
LVGL的主循環(huán)會周期性地調(diào)用上述的“l(fā)abel_speed_timer”函數(shù),它里面將讀取溫濕度傳感器的數(shù)值,并更新“l(fā)abel_speed”的文字。
這些定時器都是在LVGL的主循環(huán)里被調(diào)用的,主循環(huán)如何得到這些定時器?它們都被放入一個鏈表里:
怎么處理_lv_timer_ll鏈表里的各個timer?LVGL里有一個循環(huán),代碼如下:
12.2 開發(fā)第1個LVGL程序
本節(jié)課程演示如何編譯、運行第1個LVGL程序。
12.2.1 下載源碼
這些源碼可以在網(wǎng)盤資料中看到,你可以不必自己下載:
RemiPi上運行的是Linux系統(tǒng),支持的顯示設(shè)備是基于Framebuffer的。所以,可以從LVGL官網(wǎng)下載“l(fā)v_port_linux_frame_buffer”:它是基于Linux的、支持Framebuffer的示例程序。
如下圖所示下載v9.0版本:
在“l(fā)v_port_linux_frame_buffer”里,含有編譯工具、LVGL 的源碼鏈接(“如上圖步驟4所示,就是LVGL源碼鏈接”)。“l(fā)v_port_linux_frame_buffer”里,“l(fā)vgl”子目錄是空的,我們需要下載LVGL v9.1的源碼放到“l(fā)vgl”目錄里(LVGL9.0有些問題)。點擊上圖步驟4的“l(fā)vgl”,如下圖操作:
把“l(fā)v_port_linux_frame_buffer-release-v9.0.zip”、“l(fā)vgl-9.1.0.zip”分別解壓后,得到“l(fā)v_port_linux_frame_buffer-release-v9.0”、“l(fā)vgl-9.1.0”,把后者目錄下的所有文件復(fù) 制進“l(fā)v_port_linux_frame_buffer-release-v9.0/lvgl”目錄下。
在Ubuntu下可以執(zhí)行以下命令解壓:
左右滑動查看完整內(nèi)容
$ unzip lv_port_linux_frame_buffer-release-v9.0.zip $ unzip lvgl-9.1.0.zip $ mv lvgl-9.1.0/* lv_port_linux_frame_buffer-release-v9.0/lvgl/
-
嵌入式
+關(guān)注
關(guān)注
5086文章
19140瀏覽量
305860 -
開源
+關(guān)注
關(guān)注
3文章
3363瀏覽量
42544 -
圖形庫
+關(guān)注
關(guān)注
0文章
18瀏覽量
9031 -
LVGL
+關(guān)注
關(guān)注
1文章
85瀏覽量
2991
原文標(biāo)題:LVGL開發(fā)入門 - RZ MPU工業(yè)控制教程連載(45)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論