HMI-Board之LVGL應用

hywing發表於2024-06-04

移植

使用預設模板工程新建一個RT-Thread專案,BSP版本為1.1.1

image

開啟RT-Thread Settings,點選右側箭頭按鈕進入詳細頁,在硬體欄開啟以下幾個配置選項(LCD、觸控式螢幕、demo)

image

此時,開啟board資料夾,發現下面會有一個lvgl的目錄,package目錄下會有LVGL和lv-music兩個目錄,如果沒有請檢查上一步有沒有漏掉的步驟

image

編譯、下載程式進行發現開發板已經執行lv-music-demo程式

image

介面定製

接下來安裝SquareLine Studio,定製自己的lvgl介面,我這裡下載的是SquareLine_Studio_1.3.3_Setup.exe,一路預設安裝就可以了

image

安裝完需要登入賬號才能使用,沒有賬戶的請註冊一下

image

選擇Create下的NuMaker-HMI-M467專案,然後CREATE

image

這個工程自帶Sreen,先隨意拖幾個控制元件到Screen1上面

image

匯出ui檔案到指定資料夾lvgl-demo,生成原始碼檔案:Export -> Export UI Files

image

生成的原始碼檔案如下

image

複製上面的資料夾到lvgl工程的目錄packages\lv_music_demo-v0.3.4下面

image

把lv_demo_music函式改一下改成下面

/**
 * @file lv_demo_music.c
 *
 */

/*********************
 *      INCLUDES
 *********************/


#include "lv_demo_rtt_music.h"
#include "lvgl-demo/ui.h"

#if LV_USE_DEMO_RTT_MUSIC
void lv_demo_music(void)
{
    ui_init();
}
#endif /*LV_USE_DEMO_RTT_MUSIC*/

先清理一下工程,然後再重新構建,沒有問題的話lvgl-demo的資料夾會被加到工程目錄中去

image

Ctrl + F5啟動除錯,編譯下載程式後,自定義的介面已經可以在開發板上面顯示

image

原始碼分析

用偵錯程式抓一下lvgl的啟動過程,基本分為以下幾個步驟

INIT_ENV_EXPORT :lvgl執行緒介面作為初始化環境被系統呼叫

lvgl_thread_init:lvgl執行緒初始化

lvgl_thread_entry:啟動GUI執行緒,這裡會設定一些跟螢幕相關的引數(解析度、彩色位數等)

lv_init();

lv_port_disp_init();

lv_port_indev_init();

lv_user_gui_init();

lv_user_gui_init:自定義使用者程式碼,最終會呼叫到ui_init

相關文章