1 STM32F429I-DISCO 板载 LCD 基本参数:
| 参数 |
规格 |
| 屏幕尺寸 |
2.4 寸 TFT |
| 分辨率 |
240 × 320 |
| 控制器 |
ILI9341 |
| 接口 |
SPI5 |
| 颜色深度 |
16位 RGB565 (65536色) |
| 连接方式 |
板载直连(无需外接接线) |
2 使用 Adafruit_ILI9341 库驱动(推荐)
由于板载 LCD 使用 ILI9341 控制器并连接到 SPI5,可以使用 Adafruit 系列库进行驱动。
安装库:库管理器中搜索安装 Adafruit GFX Library,安装 Adafruit ILI9341 Library,这个库中没有搜到,就供github上直接下载,然后把zip文件安装就行,如下图。

板载 LCD 引脚映射:
| LCD 信号 |
STM32 引脚 |
Arduino 引脚名 |
| SCK (SPI5_SCK) |
PF7 |
PF7 |
| MOSI (SPI5_MOSI) |
PF9 |
PF9 |
| CS (片选) |
PC2 |
PC2 |
| DC (数据/命令) |
PD13 |
PD13 |
| RST (复位) |
PD12 |
PD12 |
| 背光控制 |
- |
由硬件自动控制 |
执行下面的代码并下载,编译通过,

#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <SPI.h>
// STM32F429I-DISCO 板载 LCD 引脚定义
#define TFT_CS PC2
#define TFT_DC PD13
#define TFT_RST PD12
// 使用 SPI5 (SCK=PF7, MOSI=PF9)
// MISO 未使用,LCD 是单向 SPI
SPIClass SPI_5(PF7, PF8, PF9, PC2); // SCK, MISO, MOSI, HWCS
Adafruit_ILI9341 tft = Adafruit_ILI9341(&SPI_5, TFT_DC, TFT_RST, TFT_CS);
void setup() {
// 初始化 SPI5
SPI_5.begin();
// 初始化 LCD
tft.begin();
// 设置屏幕方向 (0-3)
tft.setRotation(3);
// 清屏 - 黑色背景
tft.fillScreen(ILI9341_BLACK);
// 输出文字
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(2);
tft.setCursor(10, 10);
tft.println("STM32F429-DISCO");
tft.setTextColor(ILI9341_YELLOW);
tft.setTextSize(3);
tft.setCursor(10, 50);
tft.println("Hello LCD!");
// 画一个矩形
tft.drawRect(20, 100, 200, 100, ILI9341_RED);
// 画一个填充圆
tft.fillCircle(120, 200, 30, ILI9341_BLUE);
}
void loop() {
// 动态显示计数
static int count = 0;
tft.fillRect(10, 250, 200, 30, ILI9341_BLACK);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.setCursor(10, 250);
tft.print("Count: ");
tft.println(count++);
delay(500);
}
具体显示如内容所示。
3 使用 TFT_eSPI 库驱动
TFT_eSPI 库对 STM32 有更好的优化,速度更快。
安装库:库管理器搜索安装 TFT_eSPI

配置User_Setup.h:
安装后需要修改库的配置文件。在库管理器中找到 TFT_eSPI,找到 User_Setup.h 文件夹中的配置,关键配置如下:

代码如下,
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();
void setup() {
tft.init();
tft.setRotation(3);
tft.fillScreen(TFT_BLACK);
tft.setTextColor(TFT_GREEN, TFT_BLACK);
tft.setTextSize(2);
tft.drawString("STM32F429-DISCO", 10, 10);
tft.setTextColor(TFT_YELLOW, TFT_BLACK);
tft.setTextSize(3);
tft.drawString("TFT_eSPI", 10, 50);
// 画图形
tft.drawRect(20, 100, 200, 100, TFT_RED);
tft.fillCircle(120, 200, 30, TFT_BLUE);
}
void loop() {
static uint32_t count = 0;
tft.setTextColor(TFT_WHITE, TFT_BLACK);
tft.setTextSize(2);
tft.drawNumber(count++, 10, 250);
delay(100);
}
这样也可以直接访问图形。

4 小结
使用arduino开发工程,省却了很多cubeMX开始的底层配置,直接可以进行功能试验,测试速度快。
但是,这个严重依赖开发板的支持,只有官方的开发板才能使用,自己移植工作量,远大于使用常规ide的方式。不过,这样作为一个还算不错的工作模式,也是可以用来进行复杂如GUI设计的工作。
纯粹的懒人套餐。
5 常见问题
| 问题 |
解决方案 |
| 屏幕不亮/白屏 |
确认开发板型号选择STM32F429I-DISCO;检查引脚定义是否正确;确认 SPI 端口配置 |
| 上传失败找不到 STLink |
更换数据线;安装 ST-Link 驱动 (STSW-LINK009);重新插拔复位 |
| 显示颜色不对 |
检查 RGB 顺序设置(TFT_RGB / TFT_BGR) |
| 显示方向不对 |
调整setRotation() 参数 (0-3) |
| 文字乱码 |
确认使用的是标准 ASCII 字符;如需中文需要额外字库 |