你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【逢7发帖赢大礼】#2 STM32F429-Discovery在 Arduino 中的使用

[复制链接]
北方 发布时间:2026-7-6 17:02

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文件安装就行,如下图。

ST02-01.PNG

板载 LCD 引脚映射:

LCD 信号 STM32 引脚 Arduino 引脚名
SCK (SPI5_SCK) PF7 PF7
MOSI (SPI5_MOSI) PF9 PF9
CS (片选) PC2 PC2
DC (数据/命令) PD13 PD13
RST (复位) PD12 PD12
背光控制 - 由硬件自动控制

执行下面的代码并下载,编译通过,

ST02-03.PNG

#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

ST02-02.PNG

配置User_Setup.h:

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

ST02-04.PNG

代码如下,

#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);
}

这样也可以直接访问图形。

ST02-05.PNG

4 小结

使用arduino开发工程,省却了很多cubeMX开始的底层配置,直接可以进行功能试验,测试速度快。

但是,这个严重依赖开发板的支持,只有官方的开发板才能使用,自己移植工作量,远大于使用常规ide的方式。不过,这样作为一个还算不错的工作模式,也是可以用来进行复杂如GUI设计的工作。

纯粹的懒人套餐。

5 常见问题

问题 解决方案
屏幕不亮/白屏 确认开发板型号选择STM32F429I-DISCO;检查引脚定义是否正确;确认 SPI 端口配置
上传失败找不到 STLink 更换数据线;安装 ST-Link 驱动 (STSW-LINK009);重新插拔复位
显示颜色不对 检查 RGB 顺序设置(TFT_RGB / TFT_BGR
显示方向不对 调整setRotation() 参数 (0-3)
文字乱码 确认使用的是标准 ASCII 字符;如需中文需要额外字库
收藏 评论0 发布时间:2026-7-6 17:02

举报

0个回答

所属标签

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版