使用STM32 HAL库驱动TFTLCD显示屏

1、简介

在网上寻找了好久都没类似的HAL库驱动方法

特用此记录如何将厂家提供的标准库搬运到HAL库中

所用屏幕为中景园的1.54寸st7789驱动液晶屏、单片机为stm32f103c8t6

2、CubeMX初始配置

2.1基础配置

2.1.1  RCC配置

2.1.2  SYS配置

2.1.3  GPIO引脚配置

2.1.4  SPI配置

2.1.5  时钟树配置

2.1.6  项目生成

3、Keil代码搬运

3.1  标准库文件获取

打开厂家提供的标准库文件,文件链接:提取码:8888

获取后进行解压缩(提起吗错误可自行前往某宝中景园对应屏幕详细处获取)

3.2  驱动添加

打开厂家提供的标准库文件,将\**\HARDWARE\LCD中的lcd.c、lcd.h、lcd_init.c、lcd_init.h、pic.h、lcdfont.h粘贴至CubxMX生成代码文件夹目录\**\Src目录下(文件夹内任何目录都可,后续添加路径过程自行替换即可),如图:

接着在CubxMX生成代码中添加程序:

3.3  代码修改

3.2.1  lcd.h修改

删除原有#include "sys.h",添加下列代码:

#include "main.h"

#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t

其余不变

3.2.2  lcd_init.h修改

删除原有#include "sys.h",添加下列代码:

#include "main.h"

#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t

将LCD端口定义函数换成如下函数:

//RES
#define LCD_RES_Clr()  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET)
#define LCD_RES_Set()  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET)
//DC
#define LCD_DC_Clr()   HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET)
#define LCD_DC_Set()   HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET)
//CS
#define LCD_CS_Clr()   HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET)
#define LCD_CS_Set()   HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET)
//BLK
#define LCD_BLK_Clr()  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET)
#define LCD_BLK_Set()  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET)

其余不变

3.2.3  lcd.c修改

删除原有#include "sys.h"

3.2.4  lcd_init.c修改

1,删除原有#include "sys.h"

2,添加头文件#include "spi.h"

3,删除整个void LCD_GPIO_Init(void)初始化函数

4,将LCD_Writ_Bus(u8 dat)换成如下代码:

void LCD_Writ_Bus(u8 dat) 
{	
  LCD_CS_Clr();   
  HAL_SPI_Transmit(&hspi1,&dat,1, 1000);
  LCD_CS_Set();	
}

5,找到void LCD_Init(void)函数,将延时函数delay_ms替换成HAL_Delay

3.2.5  main.c修改 

1,添加头文件

#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"

2,LCD初始化

 3,while中添加代码

将厂家提供的标准库搬运过来即可

        LCD_ShowChinese(0,0,"中景园电子",RED,WHITE,24,0);
		LCD_ShowString(24,30,"LCD_W:",RED,WHITE,16,0);
		LCD_ShowIntNum(72,30,LCD_W,3,RED,WHITE,16);
		LCD_ShowString(24,50,"LCD_H:",RED,WHITE,16,0);
		LCD_ShowIntNum(72,50,LCD_H,3,RED,WHITE,16);
		LCD_ShowFloatNum1(20,80,t,4,RED,WHITE,16);
		t+=0.11;
        LCD_ShowPicture(80,70,40,40,gImage_gImage_1);

4   硬件连接

BLK   —->    PA1

C  S   —->    PA2

D  C   —->    PA3

RES   —->    PA4

SDA   —->    PA7

SCL   —->    PA5

VCC  —->    3.3V

GND  —->   GND

完成以上操作就可以实现功能啦

因为我注释了图片显示,如果按照以上操作完成应该还有个企鹅图片显示

如有错误,恳请指正。

作者:脑袋空空向前冲

物联沃分享整理
物联沃-IOTWORD物联网 » 使用STM32 HAL库驱动TFTLCD显示屏

发表评论