使用STMF103C8T6、cubemx配置spi驱动 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"删除,并且添加如下代码:

#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.实验现象

 

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
学习记录之stmf103c8t6最小系统板驱动mpu6050: stmf103c8t6是一款非常流行的ARM Cortex-M3微控制器,是许多嵌入式系统和嵌入式设备的首选控制器,同时mpu6050是一款集成了三轴陀螺仪和三轴加速度计的传感器模块,广泛应用于许多嵌入式设备。在这个过程,我们将学习如何将这两个芯片配合使用,以实现一个完整的运动控制系统。 首先,我们需要学习如何将mp6050模块连接到stmf103c8t6微控制器上。我们需要通过I2C接口连接两个设备。I2C总线是一种在嵌入式系统常用的通信标准,可以轻松地连接多个设备。通过I2C接口读取mpu6050模块的数据,我们可以读取模块的角速度、线性加速度和温度等信息。 其次,我们需要学习如何使用stmf103c8t6微控制器来处理mpu6050模块的数据。通过读取传感器模块的数据并处理,我们可以分析实时的角速度和线性加速度等信息,并根据用户需要进行相应的运动控制。在此过程,我们需要学习如何使用定时器、断和其他许多嵌入式技术,以确保系统的稳定和准确。 最后,我们需要学习如何将处理过的数据传送给其他设备或显示设备,例如LED灯、LCD显示屏等。在此过程,我们需要学习如何用C/C++语言编写代码以及硬件开发相关的知识。 总之,学习如何驱动mpu6050模块,需要我们掌握I2C通信、数据处理和其他嵌入式技术,以实现更完整和适用的嵌入式系统和控制设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值