一,前言
周日下午沒事兒做,那么繼續我的圖形圖像學習之路,之前弄了一段時間上位機開發,還是回歸老本行,嵌入式開發吧~從游戲引擎(HMI)部分來說,我覺得他們設計的核心思路應該是一樣的。所以我繼續先研究小而精的c代碼。畢竟cocos2dx是游戲行業專屬,我所在的汽車行業要用HMI引擎,貌似用的也是公司自己開發,或QT或Kanzi等。那么我想先看小而精的代碼,從而學習其底層設計思路,所以選擇littlevgl繼續進行源碼進階學習。
二,lvgl在stm32F4開發板上移植
之前蜻蜓點水的方式,在PC上使用過了lvgl,然后簡單的分析了下代碼。GUI庫lvgl應用及分析--Apple的學習筆記和GUI庫lvgl源碼分析--Apple的學習筆記,所以今天就來移植下。一般從方法論出發,移植代碼可以對代碼一點都不了解,僅按help去操作即可。
我今天就是這樣子的,在網上及官網找了些資料,比如draw的回調函數,input的注冊函數等。反正是沒有什么技術含量的。但是在使用lvgl的過程中,覺得它的可移植性及跨平臺性很好。所以我已經認證它是優秀開源代碼了。不過網上看了些資料,說它一上來就開了很大的buffer,不像emwin可以跑在資源很小的單片機上。但是我不這樣認為,因為現在的單片機資源和早期的真的很不同,反正是越來越好,所以emwin可以淘汰了,另外emwin好像不開放源碼的,這樣的黑盒開源我是不感興趣的,因為學不到東西。估計將來AI應該也可以在單片機上運行。
三,lvgl運行效果
沒法上傳手機排的視頻,在pc上播放時轉錄為gif,看上去效果不太好。主要是說明下lvgl的功能。我是下午吃晚飯,一會就移植完了,這個HMI引擎真的很好用!
由于我有觸摸屏,所以輸入就用button。如下為按key0則button會有按下的效果,字符顯示按下的總次數。而下方為萬年歷,高亮了今天的日期,并且高亮了我要去打疫苗的時間做提醒。一不小心,我等于做了一個簡單的應用,哈哈~

HMI.gif
通過手機拍攝再傳到微信,再縮小后黏貼入,果然有點糊呀~

image.png
總結
雖然移植是沒有什么技術含量的,主要是體驗下lvgl包的便利性。就這樣先玩玩,然后又要開始源碼分析之旅咯
關鍵字:littlevgl 移植 stm32
引用地址:
玩玩littlevgl移植到stm32
推薦閱讀最新更新時間:2025-03-25 00:16
STM32入門學習筆記之uCOS-II系統移植3
⑤這兩個函數都用于任務切換,它們的本質都是觸發PendSV中斷,具體切換過程在PendSV的中斷函數中進行,其中OSCtxSw是任務級切換,OSIntCtxSw是中斷級切換,是從中斷退出時切換到一個任務中,從中斷切換到任務的過程中,CPU的寄存器入棧工作已經完成。 OSCtxSw PUSH {R4, R5} LDR R4, =NVIC_INT_CTRL ;觸發PendSV異常 LDR R5, =NVIC_PENDSVSET STR R5, ;向NVIC_INT_CTRL寫入NVIC_PENDSVSET觸發PendSV中斷 POP {R4, R5} BX LR OSIntCt
[單片機]
S5PV210之beep驅動從linux2.6.35.7移植到linux3.0.8
beep驅動從linux2.6.35.7內核移植到linux3.0.8,修改的部分為: '='后面的為修改后的 .ioctl = .unlocked_ioctl static int beep_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) = static int beep_ioctl(struct file *file, unsigned int cmd, unsigned long arg) beep_ioctl函數中struct inode *inode去掉,原因是b
[單片機]
在stm32f407上移植openharmony遇到的問題
問題1: (.text.Reset_Handler+0x2e): undefined reference to `__libc_init_array' __libc_init_array在startup_stm32f407xx.s中,看字面意思像是對C庫的初始化。 我現在用的是musl的C庫。也可以在startup_stm32f407xx.s中注釋掉相關語句。 /* Call the clock system intitialization function.*/ bl SystemInit /* Call static constructors */ /* bl __libc_init_array *//*
[單片機]
2.1 linux中uboot移植
(一)友善之臂介紹: README for FriendlyARM Tiny4412 說明:本u-boot源代碼由三星原廠提供,并由友善之臂修改移植,以適用于Tiny4412開發板平臺。 僅供嵌入式愛好者學習研究之用,友善之臂不對此提供任何技術支持和維護。 ----------------------------------------------------- 1. Build uboot a) 安裝好toolchain (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)并設置好 環境變量PATH,保證可以正常使用。 b) 解壓 uboot_tiny4412-20130729.tgz 并進入相應的
[單片機]
【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植到 GD32F4xx 系列
1.本文簡介 GD32F4xx 系列 MCU 是基于 Arm? Cortex?-M4 處理器的 32 位通用微控制器,與 STM32F4xx系列 MCU 保持高度兼容。本文主要從以下三個方面進行介紹:硬件資源對比、外設及性能對比以及從 STM32F4xx 移植到 GD32F4xx 的移植步驟,旨在讓開發者能夠快速從 STM32F4xx移植到 GD32F4xx,縮短研發周期,加快產品開發進度。 2.GD32F4xx vs STM32F4xx 硬件資源對比 GD32F4xx 和 STM32F4xx 硬件引腳對比如表 2-1. GD32F4xx 和 STM32F4xx pin 對比所示,由該表可知,GD32F4xx 與 STM32F
[單片機]
007_STM32程序移植之_多通道ADC轉換
1. 測試環境:STM32C8T6 2. 測試:使用DMA進行多通道ADC轉換 3. 描述:用 ADC 連續采集 12 路模擬信號,并由 DMA 傳輸到內存。ADC 配置為掃描 并且連續轉換模式,ADC 的時鐘配置為 12MHZ。在每次轉換結束后,由 DMA 循環將轉換的數據傳輸到內存中。ADC 可以連續采集 N 次求平均值。最后 通過串口傳輸出最后轉換的結果。 4. 測試引腳:
[單片機]
u-boot移植總結(二)LED點燈調試 和 u-boot加載地址
(一)LED點燈調試 FL2440電路總共有4個LED0,LED1,LED2,LED3,分別接到板子GPB5,GPB6,GPB8,GPB10引腳。通過設置三個寄存器GPBCON(0x56000010),GPBDAT(0x56000014),GPBUP(0x56000018),控制GPB 引腳可控LED的亮滅。 控制LED亮滅有三步: 1,設置GPB5,GPB6,GPB8,GPB10為輸出工作方式,即GPBCON = 01 GPBCON = 01,GPBCON = 01,GPBCON = 01 2,GPBUP置0000 0101 0110 0000 即GPB5,GPB6,GPB8,GPB10皆禁止使能上拉 3,設置GPBD
[單片機]
Ubuntu 8.10 下移植 madplay 到 mini2440
在 Ubuntu 8.10 下移植 madplay 到 mini2440過程中同樣參考了網上的一篇帖子,由于當時未想到要把過程放到這就沒有記錄那篇帖子的網址,在此表示感謝! madplay移植記錄: 一、PC版的madplay PC版的編譯基本同mini2440手冊上的一致。 二、ARM版的madplay 1、編譯zlib-1.2.3 解壓zlib-1.2.3.tar.gz到/opt/FriendlyARM/mini2440/madplay/src-arm/zlib-1.2.3 進入zlib-1.2.3目錄 配置configure: sudo gedit configure a、把AR=${AR- ar rc }改為: AR=${
[單片機]