单片机
返回首页

STM32F407VET6开发板移植基于HAL库的正点原子LCD屏幕驱动

2025-10-22 来源:bilibili

up的开发板长这个样子:

比较便宜XD

屏幕的话是2.8寸带触摸的TFT LCD屏幕,驱动是ILI9341。

首先,在CubeMX中创建初始化配置文件需要配置的选项如下图,

(LED0,LED1与Key1,2,3,4与LCD驱动无关):

需要对RCC,SYS的固定配置以及时钟树的改动此处不作介绍。可看最后的参考文章链接。

首先配置LCD_BL,即背光控制相关的GPIO。管脚脚位选择需要看开发板的原理图。我的原理图是这样的:

可以看到需要将PB1配置为LCD_BL。

具体配置如下图:

之后配置FSMC:

此处LCD Register Select信号也需要看你的开发板原理图。我的是这样的:

可以看到选择了FSMC_A18作为信号线。

FSMC具体配置如下:

最后检查一下配置:点击Pinout->Pins/Signals Options。

略去无关的引脚配置,检查一下是否相符。生成IDE项目即可。

之后打开正点原子的HAL库LCD驱动文件夹,可以看到四个相关文件(GB2312编码,请自行处理中文注释乱码问题)。

将它们复制到刚才创建的IDE项目中,up的项目结构是这样的:

在Demo LCDDriversBSP下的Inc文件夹内放置.h文件,Src文件夹内放置.c文件。

记得将Inc文件夹添加到编译路径中:

在该界面中点击右侧Source Location,双击下面的Drivers文件夹,将刚刚粘贴的驱动文件中的lcd_ex.c添加到Filter中。(该文件不参与编译)

记得退出来以后要点Apply。

下面是驱动文件的具体修改过程:

首先是lcd.c的Include部分,修改为:

lcd.h的Include:

修改完后需要将四个文件中所有的delay_ms()函数替换为HAL_Delay(),使用delay_us()的将其替换为HAL_Delay(1)。

之后将lcd.c文件中的void HAL_SRAM_MspInit(SRAM_HandleTypeDef *hsram)

函数整体注释掉,在创建项目时已经配置好了FSMC。

接下来将该函数下面的函数LCD_Init()中关于GPIO和FSMC的相关配置删掉,删除后的效果是这样的:

在该函数中有一处printf函数,printf('LCD ID:%xrn', lcddev.id); /* 打印LCD ID */

把它注释掉。

之后就是最重要的脚位对应的修改:

将lcd.h文件中开始的宏定义做对应的修改:

将背光脚BL改为对应的脚位,我的是PB1。

接下来修改NEX和AX对应的管脚。我的开发板配置是PD13  ------> FSMC_A18;PD7  ------> FSMC_NE1,所以所处如下图的改动。

至于其余数据脚位f407vet6和f407zgt6是相同的,暂不需要更改。

最后就是编写main.c函数了

在该文件中include一下:#include 'lcd.h'

添加测试函数如下

/* USER CODE BEGIN 2 */

 lcd_init();  lcd_show_string(10, 110, 240, 16, 16, 'ATOM@ALIENTEK', RED);  /* USER CODE END 2 */

编译烧录后即可得到结果。

cut-off

github 链接:   https://github.com/Hammerift/stm32f407vet-with-LCD.git


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章