一、所用工具:
1、芯片: STM32F407ZGT6
2、STM32CubeMx软件
3、IDE: MDK-Keil软件
4、显示屏:正点原子4.3寸TFT LCD MCU电阻屏 480*800
二、实现功能:
初始化LCD显示、触摸
三、准备工作:
1、有关CUBEMX的初始化配置,参见我的另一篇blog:【STM32+HAL】CUBEMX初始化配置
2、准备好商家提供的LCD文件(本文末附)
四、LCD显示配置步骤:
1、配置FSMC
2、配置LCD屏幕的背光引脚
至此,HAL库配置完成
3、创建LCD的C文件和H头文件
4、将例程中的代码复制到LCD.h中
注意:需要删去头文件
改为添加以下代码
#include "stdint.h"
#include "main.h"
#include "stdio.h"
typedef uint8_t u8;
typedef uint16_t u16;
typedef uint32_t u32;
typedef volatile u8 vu8;
typedef volatile u16 vu16;
typedef volatile u32 vu32;
5、将 extern SRAM_HandleTypeDef TFTSRAM_Handler; 这条语句注释
2
6、将#include "lcd.h"添加到main.c并添加头文件路径,编译通过无错误
7、将例程中的lcd.c的内容复制到新建的lcd.c文件中,同样的不需要把头文件的引入复制
先引入#include "lcd.h",并同样注释掉 SRAM_HandleTypeDef TFTSRAM_Handler;这条代码
以及以下打框代码
8、将代码中的延时函数替换
同时,将文件中微秒延时语句都替换为 HAL_Delay(1);
9、 添加例程文件中的font.c到指定文件夹,并在lcd.c文件中引入#include "font.h"
头文件
10、替换宏定义代码
将下图中带红框代码替换为 HAL_GPIO_WritePin(LCD_BL_GPIO_Port, LCD_BL_Pin, GPIO_PIN_RESET);
至此,LCD显示部分配置完成,开始配置LCD触摸功能。
五、LCD触摸屏配置步骤:
1、配置一个1us的定时器
2、创建一个HARDWARE文件夹
将官方例程中的24CXX、IIC、TOUCH、sys文件夹复制到项目中,同时把移植好的LCD驱动也放到HARDWARE文件夹中,放好后添加头文件路径
3、使用定时器6来做延时1us函数用作产生IIC时序
首先创建TIMx_Delay.h和TIMx_Delay.c文件
TIMx_Delay.h:
#ifndef CPROJECT_TIMX_DELAY_H
#define CPROJECT_TIMX_DELAY_H
#include "tim.h"
#define DEL_TIM_Handle &htim6
void delay_us(uint16_t us);
#endif
TIMx_Delay.c:
//源文件
#include "TIMx_Delay.h"
void delay_us(uint16_t us)
{
__HAL_TIM_SET_COUNTER(DEL_TIM_Handle, 0);
__HAL_TIM_ENABLE(DEL_TIM_Handle);
while(__HAL_TIM_GET_COUNTER(DEL_TIM_Handle) < us);
__HAL_TIM_DISABLE(DEL_TIM_Handle);
}
至此,触摸屏配置完成。
六、参考文章
正点原子STM32F4探索者开发板HAL库TFT LCD屏幕例程移植到STM32CubeMX+CLion
正点原子STM32F4探索者开发板HAL库触摸屏例程移植到STM32CubeMX+CLion