试用 LVGL Pro,一套完整的工具包,助您高效构建、测试、分享和交付 UI!
LVGL
案例展示

STM32F429 Discovery 开发板:LVGL 移植与演示

将 LVGL 移植到 STM32F429 Discovery 开发板的分步指南,配备 2.4 英寸 TFT 显示屏和电阻式触摸板。

加博尔·基什-瓦莫希加博尔·基什-瓦莫希6 分钟阅读

在这篇文章中,我将向您展示如何将 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-submodules
bash

或下载 项目的 zip 文件

开发板#

STM32F429 Discovery 开发板,配备 2.4 英寸 TFT 显示屏
STM32F429 Discovery 开发板,配备 2.4 英寸 TFT 显示屏
STM32F429I Discovery
外设
USB 调试和编程,LTDC(LCD TFT 显示控制器),Chrom-ART 图形加速器 (DMA2D)

主要特性:

  • 强大的 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)的图形加速器。

创建新项目:

  1. 转到 File → New → C Project
  2. 选择 Empty project,使用 Ac6 STM32 MCU GCC 工具链
  3. 选择您的开发板类型(STM32F429I-Discovery)
  4. 启用 Cube HAL
  5. 如果按钮处于活动状态,请点击"Download target firmware"
STM32 新项目 - 选择工具链
在 SW4STM32 中选择工具链
STM32 新项目 - 选择开发板
选择您的开发板类型
STM32 新项目 - 选择 HAL 驱动程序
启用 Cube HAL 驱动程序

结果是一个包含许多文件夹和文件的项目。我能够构建这个初始项目,没有任何警告或错误。

测试设置#

为了测试开发板,我在主函数中编写了一个简单的 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.git
bash

要添加新目录,请在 Eclipse 中右键单击项目名称,然后选择 Refresh

配置#

  1. lvgl/lv_conf_templ.h 复制到 lvgl 文件夹旁边
  2. 将其重命名为 lv_conf.h
  3. 删除开头的 #if 0 及其末尾的 #endif 以启用内容

lv_conf.h 中,我只更改了:

LV_HOR_RES  240
LV_VER_RES  320
c

驱动程序实现#

我根据示例程序创建了驱动程序:

  1. 创建 hal_stm_lvgl 文件夹
  2. tft.c 中编写显示驱动程序
  3. touchpad.c 中编写触摸板驱动程序
  4. 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 之旅的第一步!

关于作者

加博尔·基什-瓦莫希
加博尔·基什-瓦莫希

LVGL 创始人

LVGL 的创始人和首席开发者,这是一个被全球数百万设备使用的开源嵌入式图形库。

认识博客背后的作者们

了解那些分享 LVGL 知识的优秀作者们

查看作者

订阅我们的通讯 不错过任何关于 LVGL 的新闻。我们每月最多发送 2 封邮件。

LVGL

LVGL 是最受欢迎的免费开源嵌入式图形库,支持任何 MCU、MPU 和显示类型,助您构建精美的用户界面。

我们还提供 UI 设计、实现和咨询等服务。

© 2026 LVGL。保留所有权利。
YouTubeGitHubLinkedIn