STM32(HAL库)驱动st7789LCD屏幕(7引脚240*240)

简介: STM32(HAL库)驱动st7789LCD屏幕(7引脚240*240)

1、简介

屏幕厂家提供的都是标准库,网上找了找没看到好用的HAL库屏幕驱动,因此本文对HAL库驱动TFT屏幕进行详细讲解。


2、CubeMX初始化配置

2.1 基础配置

2.1.1 SYS配置


fd8fcf1bb3d7433198d8351e613f9928.png


2.1.2 RCC配置


578863891a574bf79ca22de2ea0da5cd.png


2.2 屏幕引脚配置


937a804030794fb59409d0f40e23fe1d.png

c825bbe27fd84522bd672b701b5ec645.png


2.3 项目生成


8a7288aa74b24d49ade5d5687057d8f9.png

60c8a97e105844a2881d5d481cc6715d.png


3、KEIL端程序整合

3.1 LCD驱动添加

首先打开厂家提供的便准库文件找到LCD驱动,驱动链接如下:


LCD_7引脚240x240 https://www.aliyundrive.com/s/EKDhHV6dKqx 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。


首先在Core/Src目录下,添加lcd.c,lcd_init.c如下图所示:


b9036382978d4f118b1334721d13c9e3.png

a4bc2944201b4a258d2c24882d9ddcec.png


接着在Core/Inc目录下,添加对应的.h文件如下图所示:


a2a37e276038402487bca7c6b5236979.png


接着对驱动进行添加如下图所示:


de499282eeea4ac68470c4378d4213dc.png


3.2 函数修改

3.2.1 lcd.h修改

将原来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 修改

首先也是将原来llcd_innit.h中 #include "sys.h"删除,并且添加如下代码:

#include "main.h"
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t



接着将LCD端口定义函数用如下代码替换:

#define LCD_RES_Clr()  HAL_GPIO_WritePin(TFT_RES_GPIO_Port,TFT_RES_Pin, GPIO_PIN_RESET)//RES
#define LCD_RES_Set()  HAL_GPIO_WritePin(TFT_RES_GPIO_Port,TFT_RES_Pin, GPIO_PIN_SET)
 
#define LCD_DC_Clr()   HAL_GPIO_WritePin(TFT_DC_GPIO_Port,TFT_DC_Pin, GPIO_PIN_RESET)//DC
#define LCD_DC_Set()   HAL_GPIO_WritePin(TFT_DC_GPIO_Port,TFT_DC_Pin, GPIO_PIN_SET)
         
#define LCD_CS_Clr()   HAL_GPIO_WritePin(TFT_CS_GPIO_Port,TFT_CS_Pin, GPIO_PIN_RESET)//CS
#define LCD_CS_Set()   HAL_GPIO_WritePin(TFT_CS_GPIO_Port,TFT_CS_Pin, GPIO_PIN_SET)
 
#define LCD_BLK_Clr()  HAL_GPIO_WritePin(TFT_BL_GPIO_Port,TFT_BL_Pin, GPIO_PIN_RESET)//BLK
#define LCD_BLK_Set()  HAL_GPIO_WritePin(TFT_BL_GPIO_Port,TFT_BL_Pin, GPIO_PIN_SET)

3.2.3 lcd.c修改

将头文件#include "delay.h"删除

3.2.4 lcd_inIt.c修改

1、将头文件#include "delay.h"删除

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

3、将 LCD_GPIO_Init(void)函数内全部注释,如下图所示:



4、将LCD_Writ_Bus(u8 dat) )函数用以下代码替换,如下图所示:

LCD_CS_Clr();
HAL_SPI_Transmit(&hspi1,&dat,1, 1000);  
LCD_CS_Set();



5、延时函数替换

CTRL+F进行整体替换

HAL_Delay



3.3 主函数代码

3.3.1 添加头文件

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

3.3.2 LCD进行初始化

float t=0;
u8 i,j;
LCD_Init();//LCD初始化
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);

添加位置如下图所示:



3.3.3 while中添加如下代码

LCD_ShowChinese(0,0,"中景园电子",RED,WHITE,32,0);
    LCD_ShowString(0,40,"LCD_W:",RED,WHITE,16,0);
    LCD_ShowIntNum(48,40,LCD_W,3,RED,WHITE,16);
    LCD_ShowString(80,40,"LCD_H:",RED,WHITE,16,0);
    LCD_ShowIntNum(128,40,LCD_H,3,RED,WHITE,16);
    LCD_ShowString(80,40,"LCD_H:",RED,WHITE,16,0);
    LCD_ShowString(0,70,"Increaseing Nun:",RED,WHITE,16,0);
    LCD_ShowFloatNum1(128,70,t,4,RED,WHITE,16);
    t+=0.11;
    for(j=0;j<3;j++)
    {
      for(i=0;i<6;i++)
      {
        LCD_ShowPicture(40*i,120+j*40,40,40,gImage_1);
      }
    }


4、硬件连接

VCC----3.3V

GND---GND

A1 ---- BL/LED

A2 ---- RES/RST

A3 ---- DC/RS

A4 ---- CS(悬空)

A5 ---- SCLK

A7 ---- MOSI/SDA


5、 效果展示


4afede21d2324b8a88708cd038ae02d5.jpg


上文如有错误,恳请各位大佬指正。



相关文章
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
268 14
STM32Cubemx PWM驱动SG90舵机
STM32Cubemx PWM驱动SG90舵机
620 13
STM32CubeMX mpu6050驱动
STM32CubeMX mpu6050驱动
210 10
STM32CubeMX EC11旋转编码器驱动
STM32CubeMX EC11旋转编码器驱动
1069 10
STM32CubeMX OLED驱动
STM32CubeMX OLED驱动
211 10
|
芯片
STM32CubeMX TM1637驱动数码管
STM32CubeMX TM1637驱动数码管
730 6
|
传感器
手把手在STM32F103C8T6上构建可扩展可移植的DHT11驱动
【8月更文挑战第29天】本文详细介绍在STM32F103C8T6上构建可扩展且可移植的DHT11温湿度传感器驱动的步骤,包括硬件与软件准备、硬件连接、驱动代码编写及测试。通过这些步骤,可根据实际项目需求优化和扩展代码。
591 0
STM32CubeMX WS2812B灯驱动
STM32CubeMX WS2812B灯驱动
867 1
STM32CubeMX ULN2003步进电机驱动
STM32CubeMX ULN2003步进电机驱动
320 0
STM32Cubemx TB6612直流电机驱动
STM32Cubemx TB6612直流电机驱动
746 0