在这篇文章中,我将向您展示如何将 Littlev 图形库(现在的 LVGL)移植到 STM32F429 Discovery 开发板。移植过程相当简单,因为这个 GUI 库只需要几个接口函数。虽然我之前从未使用过 STM32 微控制器,但整个过程只花了半天时间。
STM32F429 Discovery 开发板上的 LVGL 演示
即用型项目#
您可以从 GitHub 下载即用型项目:stm32f429_disco_no_os_sw4stm32
使用 git 克隆:
git clone https://github.com/littlevgl/stm32f429_disco_no_os_sw4stm32.git --recurse-submodulesbash或下载 项目的 zip 文件。
开发板#

主要特性:
- 强大的 STM32F429ZIT6 微控制器,配备 ARM Cortex-M4 内核
- 2 MB 闪存和 256 KB 内部内存
- 320×240、2.4 英寸 QVGA TFT LCD,带电阻式触摸板
- 64 Mbit SDRAM(不是必需的 - 内部内存足以容纳一个帧缓冲区)
- LVGL 不需要双缓冲来实现透明度、滚动或动画等高级功能
- USB 接口,用于固件加载和调试
设置新项目#
如果您不使用即用型项目,以下是如何从头开始设置新项目。
开发环境#
我首先搜索代码示例,很快找到了 STM32CubeF4,这是 ST 的便携式嵌入式软件库,附带许多示例。
对于基于 Eclipse 的 IDE,我使用了 SW4STM32。您需要在 openstm32.org 注册才能下载 IDE。在 Linux Mint 上安装非常简单,该 IDE 是跨平台的(也可在 Windows 和 macOS 上运行)。
创建项目#
我查看了 STM32CubeF4 包中一些与显示相关的示例。在这个微控制器中,LCD 控制器模块称为 LTDC(LCD TFT 显示控制器),它具有称为 Chrom-ART(也称为 DMA2D)的图形加速器。
创建新项目:
- 转到 File → New → C Project
- 选择 Empty project,使用 Ac6 STM32 MCU GCC 工具链
- 选择您的开发板类型(STM32F429I-Discovery)
- 启用 Cube HAL
- 如果按钮处于活动状态,请点击"Download target firmware"



结果是一个包含许多文件夹和文件的项目。我能够构建这个初始项目,没有任何警告或错误。
测试设置#
为了测试开发板,我在主函数中编写了一个简单的 LED 闪烁程序:
int main(void) {
HAL_Init();
BSP_LED_Init(LED3);
while(1) {
BSP_LED_Toggle(LED3);
HAL_Delay(300);
}
}c移植 LVGL#
添加 LVGL 仓库#
使用终端,我从 LVGL 的 GitHub 页面克隆了 lvgl 仓库。从项目的根文件夹:
git clone https://github.com/littlevgl/lvgl.gitbash要添加新目录,请在 Eclipse 中右键单击项目名称,然后选择 Refresh。
配置#
- 将 lvgl/lv_conf_templ.h 复制到 lvgl 文件夹旁边
- 将其重命名为 lv_conf.h
- 删除开头的
#if 0及其末尾的#endif以启用内容
在 lv_conf.h 中,我只更改了:
LV_HOR_RES 240
LV_VER_RES 320c驱动程序实现#
我根据示例程序创建了驱动程序:
- 创建 hal_stm_lvgl 文件夹
- 在 tft.c 中编写显示驱动程序
- 在 touchpad.c 中编写触摸板驱动程序
- 将
lv_tick_inc(1)添加到 src/stm32f4xx_it.c → SysTick_Handler()
在 main.c 中,我调用了:
lv_init()tft_init()touchpad_init()
项目成功编译并加载到开发板。
运行演示#
最后,我添加了 lv_examples 仓库并调用了 demo_create()。这创建了上面视频中显示的 GUI。
总结#
STM32F429 Discovery 开发板是一款出色、强大且低成本的开发板,是您第一个 GUI 应用程序的绝佳起点。使用 LVGL,您可以创建现代和创新的图形用户界面。通过遵循本指南,您可以轻松完成嵌入式 GUI 之旅的第一步!
