当前位置:   article > 正文

使用STMF103C8T6、cubemx配置spi驱动 ST7789中景园电子屏幕_cubemax st7789

cubemax st7789

 前言

本文记录了我移植厂家的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"删除,并且添加如下代码:

  1. #include "main.h"
  2. #define u8 uint8_t
  3. #define u16 uint16_t
  4. #define u32 uint32_t

 

3.2  lcd_init.h 修改

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

  1. #include "main.h"
  2. #define u8 uint8_t
  3. #define u16 uint16_t
  4. #define u32 uint32_t

 

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

  1. //-----------------LCD端口定义----------------
  2. #define LCD_RES_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2, GPIO_PIN_RESET)//RES
  3. #define LCD_RES_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2, GPIO_PIN_SET)
  4. #define LCD_DC_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3, GPIO_PIN_RESET)//DC
  5. #define LCD_DC_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3, GPIO_PIN_SET)
  6. #define LCD_CS_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4, GPIO_PIN_RESET)//CS
  7. #define LCD_CS_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4, GPIO_PIN_SET)
  8. #define LCD_BLK_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1, GPIO_PIN_RESET)//BLK
  9. #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) )函数用以下代码替换,如下图所示:

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

 5、延时函数替换

由于是标准库的延时,编译会报警告,需要换成HAL库的

3.5 main.c修改

1.添加头文件

  1. #include "lcd_init.h"
  2. #include "lcd.h"
  3. #include "pic.h"

2. lcd初始化

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

 3.在while中移植厂家代码

  1. LCD_ShowChinese(0,0,"中景园电子",RED,WHITE,32,0);
  2. LCD_ShowString(0,40,"LCD_W:",RED,WHITE,16,0);
  3. LCD_ShowIntNum(48,40,LCD_W,3,RED,WHITE,16);
  4. LCD_ShowString(80,40,"LCD_H:",RED,WHITE,16,0);
  5. LCD_ShowIntNum(128,40,LCD_H,3,RED,WHITE,16);
  6. LCD_ShowString(80,40,"LCD_H:",RED,WHITE,16,0);
  7. LCD_ShowString(0,70,"Increaseing Nun:",RED,WHITE,16,0);
  8. LCD_ShowFloatNum1(128,70,t,4,RED,WHITE,16);
  9. t+=0.11;
  10. for(j=0;j<3;j++)
  11. {
  12. for(i=0;i<6;i++)
  13. {
  14. LCD_ShowPicture(40*i,120+j*40,40,40,gImage_1);
  15. }
  16. }

4.硬件连接

VCC----3.3V

GND---GND

A1 ---- BLK/LED

A2 ---- RES/RST

A3 ---- DC/RS

A4 ---- CS

A5 ---- SCLK

A7 ---- MOSI/SDA

5.实验现象

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/659624
推荐阅读
相关标签
  

闽ICP备14008679号