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