痞子衡嵌入式:使用恩智浦GUI Guider快速創建全新LCD屏示例工程的步驟

来源:https://www.cnblogs.com/henjay724/p/18070984
-Advertisement-
Play Games

大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是使用恩智浦GUI Guider快速創建全新LCD屏示例工程的步驟。 在痞子衡舊文 《在i.MXRT1170上快速點亮一款全新LCD屏的方法與步驟》 里,痞子衡介紹了在官方 SDK 裸機驅動 elcdif 示例工程基礎上做修改以支持一款全 ...



  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是使用恩智浦GUI Guider快速創建全新LCD屏示例工程的步驟

  在痞子衡舊文 《在i.MXRT1170上快速點亮一款全新LCD屏的方法與步驟》 里,痞子衡介紹了在官方 SDK 裸機驅動 elcdif 示例工程基礎上做修改以支持一款全新 LCD 屏的方法,那篇文章主要涉及得是對於 LCD 驅動 IC 的底層適配改動。今天我們在其基礎之上嘗試用恩智浦 GUI Guider 工具快速創建這款 LCD 屏(深圳柯達科電子生產的 KD050FWFIA019-C019A)的 LVGL 框架下的示例工程。

一、GUI Guider簡介

  LVGL 是一個適用於各種嵌入式平臺和顯示器的開源且免費的 GUI 框架庫,其第一個版本於 2016 年開源在 github 上。我們知道嵌入式 GUI 應用開發很大的工作量在於 UI 界面的設計,一個成熟的 GUI 框架通常都自帶配套的 UI 界面編輯工具,但是 LVGL 在 UI 工具方面是比較匱乏的,直到 2022 年初官方纔找了家第三方公司合作推出了 SquareLine Studio,並且不幸得是 2024 年 2 月,LVGL 已經結束了和 SquareLine Studio 的合作。

  恩智浦作為 LVGL 官方合作伙伴,在 LVGL 的支持上投入了不少精力,正因為官方 UI 工具的匱乏,恩智浦便開發了 GUI Guider 工具(第一個版本發佈於 2021 年初),藉助 GUI Guider 的拖放編輯器可以輕鬆使能 LVGL 的眾多特性,如小部件、動畫和樣式來創建 GUI,而只需少量代碼或根本無需任何代碼。

  GUI Guider 支持了眾多恩智浦 MCU 開發板以及一些官方指定的 LCD 屏,其生成的示例工程底層代碼也是基於官方 SDK。其軟體版本對應關係可以在工具菜單欄 Help->Release Note 下找到:

二、GUI Guider下創建工程

  痞子衡安裝得是最新的 GUI Guider v1.7.0-GA,讓我們打開這個工具創建初始工程,前兩步分別是選 LVGL 版本(v7/v8)以及 MCU 板卡(如果是自製板卡,只需要選對 MCU 型號即可),這裡痞子衡選擇了 LVGL v8 以及 MIMXRT1170-EVKB。

  第三步選擇模板的時候,有4種選擇,EmptyUI 就是純空界面,Widget 是一些典型的簡單界面模板,Application 是一些複雜的綜合應用界面模板,Local Projects 是導入本地已有的用戶工程界面模板。因為只是做一個簡單示例,痞子衡這裡選擇了 EmptyUI:

  第四步(也是創建工程的最後一步)是設置 LCD 屏屬性,因為我們用得是新屏,所以在 Panel Type 里需要選擇 Custom,然後手動輸入屏的名稱(會在代碼里生成相應巨集 DEMO_PANEL_KD050FWFIA019)以及尺寸,最後點擊 Create 按鈕便能生成初始工程。

  • Note: 這裡設置的 LCD 屏尺寸(寬高)在工程生成之後無法再更改。

三、GUI Guider里設計界面

  現在來到了 GUI 設計主界面,因為只是簡單示例,我們隨便拖動一個 Label 控制項,裡面寫入 Hello World 就算設計好界面了。界面設計完成需要在右上角點擊 Generate Code -> C 以生成相應界面構建 C 代碼。

四、修改MCU工程底層驅動

  現在讓我們打開創建 GUI 工程指定的文件路徑,找到如下工程目錄,rt1170_qsg_proj.guiguider 便是 GUI 設計工程文件,一級目錄下都是跟 GUI 相關的文件夾(\generated 存放工具生成的相關字型檔控制項資源文件,\custom 里可以自行添加用戶界面響應相關邏輯代碼),\sdk 文件夾下則是最終 MCU 工程(MCUX/IAR/MDK/GCC 均支持)。

  因為 GUI Guider 已經將所需的源文件全部聚合在這個目錄下,所以我們不用額外再下載任何軟體包。這時候你可以選擇你擅長的 IDE 去做進一步開發,痞子衡用 IAR 比較多, 所以便打開了 \GUI-Guider-Projects\rt1170_qsg_proj\sdk\iar\lvgl_guider_cm7.eww 工程。

  • Note:除了 MCUX 的工程可以在導入時另選官方 SDK 版本,其餘 IDE 的 SDK 版本均是確定的。如需其它 SDK 版本,需要手動更新 \GUI-Guider-Projects\rt1170_qsg_proj\sdk\Core 里文件。

  當前 GUI Guider 生成的 MCU 工程均是 FreeRTOS 版本,沒有提供裸機版本。無論工程是否基於 RTOS,這並不影響我們移植全新 LCD 屏的驅動。按照痞子衡舊文 《在i.MXRT1170上快速點亮一款全新LCD屏的方法與步驟》 里的步驟,將對 elcdif_support.c/h 的改動全部放到 display_support.c/h 里,再添加 fsl_ili9806e.c/h 文件到 lvgl_guider_cm7 工程里便大功告成了。此外由於那篇文章只是點屏,沒有涉及觸摸 IC 的驅動,所以這裡暫時也不用考慮使能觸摸功能,可將 DEMO_InitTouch() 函數的調用先註釋掉。

\GUI-Guider-Projects\rt1170_qsg_proj\sdk\Core\board\display_support.c
\GUI-Guider-Projects\rt1170_qsg_proj\sdk\Core\board\display_support.h
\GUI-Guider-Projects\rt1170_qsg_proj\sdk\Core\video\fsl_ili9806e.c
\GUI-Guider-Projects\rt1170_qsg_proj\sdk\Core\video\fsl_ili9806e.h

  給板卡供電,連接上新屏 KD050FWFIA019,編譯下載修改後的 lvgl_guider_cm7 工程,這時候就能看到 LVGL 版本的 hello world 正常顯示了:

  至此,使用恩智浦GUI Guider快速創建全新LCD屏示例工程的步驟痞子衡便介紹完畢了,掌聲在哪裡~~~

歡迎訂閱

文章會同時發佈到我的 博客園主頁CSDN主頁知乎主頁微信公眾號 平臺上。

微信搜索"痞子衡嵌入式"或者掃描下麵二維碼,就可以在手機上第一時間看了哦。

  最後歡迎關註痞子衡個人微信公眾號【痞子衡嵌入式】,一個專註嵌入式技術的公眾號,跟著痞子衡一起玩轉嵌入式。

痞子衡嵌入式-微信二維碼 痞子衡嵌入式-微信收款二維碼 痞子衡嵌入式-支付寶收款二維碼

  衡傑(痞子衡),目前就職於某全球頂級半導體原廠MCU系統部門,擔任高級嵌入式系統應用工程師。

  專欄內所有文章的轉載請註明出處:http://www.cnblogs.com/henjay724/

  與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]

  可以關註痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。

  關於專欄文章有任何疑問請直接在博客下麵留言,痞子衡會及時回覆免費(劃重點)答疑。

  痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上傳附件判斷word、excel、txt等文檔中是否含有敏感詞如身份證號,手機號等,其它檢測如PDF,圖片(OCR)等可以自行擴展。 互聯網項目中,展示的數據中不能包含個人信息等敏感信息。判斷word中是否包含手機號,word正文中是否包含身份證號等敏感信息,通過正則表達式判斷匹配手機號,身份證號, ...
  • 單一職責原則(Single Responsibility Principle, SRP)是面向對象編程和設計的五大SOLID原則之一。它強調一個類、方法或模塊應該只有一個職責,即只做一件事情。如果一個類承擔的職責過多,那麼它的可維護性、可讀性和可擴展性都會受到影響。當需要修改類的某個職責時,可能會影 ...
  • 由於同一臺電腦可以安裝多個版本的.NET Core SDK。 當安裝了許多不同版本的.NET Core SDK 之後,要如何才能使用舊版dotnet 命令,執行dotnet new 或dotnet build 之類的命令? 這部分其實並不困難,只要設定global.json 即可。 首先要查詢目前電 ...
  • 1、準備材料 正點原子stm32f407探索者開發板V2.4 STM32CubeMX軟體(Version 6.10.0) Keil µVision5 IDE(MDK-Arm) 野火DAP模擬器 XCOM V2.6串口助手 一個滑動變阻器 2、學習目標 本文主要學習 FreeRTOS 信號量的相關知識 ...
  • Linux的shell腳本,有時候我們在運行shell腳本時會給腳本傳入參數,出於邏輯上的嚴謹,在腳本中可能會做一些邏輯判斷或處理,例如判斷腳本傳入參數的個數。一般我們會用$#獲取傳入參數的個數,假如,我們在shell腳本的main函數中去判斷腳本傳入參數的個數,類似如下所示: .........f ...
  • 本文主要學習 FreeRTOS 消息隊列的相關知識,包括消息隊列概述、創建刪除複位隊列、寫入/讀取數據到隊列等關於隊列的基礎知識 ...
  • 一:新建虛擬主機 1. 在tomcat里新建文件夾myapps,在裡面添加ROOT文件,放入網站的首頁文件 新建文本文檔,輸入你想要的內容我這裡的內容是TOM.AI,把文本文檔的名字改成index.htm 2. server.xml下每個host節點就代表一個主機,相當於一個網站。 用記事本打開to ...
  • 哈嘍大家好,我是鹹魚。 今天收到了一個告警,說有台伺服器上的 swap 過高,已經用了 50% 以上了。 登錄機器查看一下記憶體以及 swap 的使用情況。 [root@localhost ~]# free -h total used free shared buff/cache available ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...