前言
本文记录了我移植厂家的ST7789的历程,由于厂家是用标准库写的,我想用cubemx,HAL库配置一遍,参考了
1.cubemx配置
1.1打开晶振
1.2打开DEBUG
1.3配置SPI
1.4配置GPIO
2.程序移植
2.1文件移植
移植一下文件到自己的工程的点C和点H
2.2添加文件到编译器
2.2.1双击CORE
2.2.2选中按添加
3.程序修改
3.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 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端口定义函数用如下代码替换:
//-----------------LCD端口定义----------------
#define LCD_RES_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2, GPIO_PIN_RESET)//RES
#define LCD_RES_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2, GPIO_PIN_SET)
#define LCD_DC_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3, GPIO_PIN_RESET)//DC
#define LCD_DC_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3, GPIO_PIN_SET)
#define LCD_CS_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4, GPIO_PIN_RESET)//CS
#define LCD_CS_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4, GPIO_PIN_SET)
#define LCD_BLK_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1, GPIO_PIN_RESET)//BLK
#define LCD_BLK_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1, GPIO_PIN_SET)
3.3 lcd.c修改
将头文件#include "delay.h"删除
3.4 lcd_inIt.c修改
1、将头文件#include "delay.h"删除
2、添加头文件#include "spi.h"
3、将 LCD_GPIO_Init(void)函数内全部注释,如下图所示:
已经在cubemx上配置了,这里注释掉就行
4、将LCD_Writ_Bus(u8 dat) )函数用以下代码替换,如下图所示:
LCD_CS_Clr();
HAL_SPI_Transmit(&hspi1,&dat,1, 1000);
LCD_CS_Set();
5、延时函数替换
由于是标准库的延时,编译会报警告,需要换成HAL库的
3.5 main.c修改
1.添加头文件
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"
2. lcd初始化
float t=0;
u8 i,j;
LCD_Init();//LCD初始化
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
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 ---- BLK/LED
A2 ---- RES/RST
A3 ---- DC/RS
A4 ---- CS
A5 ---- SCLK
A7 ---- MOSI/SDA
5.实验现象