2:STM32CubeMX配置STM32F103C8T6驱动-SPI驱动

STM32CubeMX下载地址:

下载界面

1:时钟

在这里插入图片描述

CS

在这里插入图片描述

2:模块

在这里插入图片描述

3:代码配置

在这里插入图片描述

u8 SPI_WriteByte(u8 Byte)
{
	u8 rxdata = 1;
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET);
	HAL_SPI_Transmit(&hspi2,&Byte,1,100);
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET);
	return rxdata;	
} 

使用库函数一定要包含头文件 #include "main.h"
接口 HAL_SPI_Transmit(&hspi2,&Byte,1,100);中1代表1个字节(8bit),100代表超时。

引脚拉低拉高:

在这里插入图片描述

//GPIO置位(拉高)
#define	LCD_CS_SET  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET);//GPIO_TYPE->BSRR=1<<LCD_CS    //片选端口  	PB11
#define	LCD_RS_SET	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET)//GPIO_TYPE->BSRR=1<<LCD_RS    //数据/命令  PB10	  
#define	LCD_RST_SET	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET)//GPIO_TYPE->BSRR=1<<LCD_RST   //复位			  PB12

//GPIO复位(拉低)							    
#define	LCD_CS_CLR  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET)//GPIO_TYPE->BRR=1<<LCD_CS     //片选端口  	PB11
#define	LCD_RS_CLR	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET)//GPIO_TYPE->BRR=1<<LCD_RS     //数据/命令  PB10	 
#define	LCD_RST_CLR	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET)//GPIO_TYPE->BRR=1<<LCD_RST    //复位			  PB12

延时程序

//SysTick->LOAD=nus*9;中的9是 主频/8M
//比如主频72M,此数值为9,如果8M,此数值为1
void delay_us(u32 nus)
{		
	u32 temp;	    	 
	SysTick->LOAD=nus*9; //时间加载	  		 
	SysTick->VAL=0x00;        //清空计数器
	SysTick->CTRL=0x01 ;      //开始倒数 	 
	do
	{
		temp=SysTick->CTRL;
	}
	while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
	SysTick->CTRL=0x00;       //关闭计数器
	SysTick->VAL =0X00;       //清空计数器	 
}
void delay_ms(u16 nms)
{	 		  	  
	u32 temp;		   
	SysTick->LOAD=(u32)nms*9000;//时间加载(SysTick->LOAD为24bit)
	SysTick->VAL =0x00;           //清空计数器
	SysTick->CTRL=0x01 ;          //开始倒数  
	do
	{
		temp=SysTick->CTRL;
	}
	while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
	SysTick->CTRL=0x00;       //关闭计数器
	SysTick->VAL =0X00;       //清空计数器	  	    
}   

下面介绍IGF320240A显示屏配置方法

在这里插入图片描述

在这里插入图片描述

适配

u8 SPI1_ReadWriteByte(u8 TxData)
{		
	u8 rxdata = 1;
	#if onlysend //如果只配置了发送 使用HAL_SPI_Transmit
	HAL_SPI_Transmit(&hspi1,&TxData,1,100);
	//while(HAL_SPI_GetState(&hspi1) == HAL_SPI_STATE_READY);
	#else//如果配置了发送和接收 使用HAL_SPI_TransmitReceive
	if(HAL_OK == HAL_SPI_TransmitReceive(&hspi1,&TxData,&rxdata,1,100))
	{	
		return rxdata;	
	};
	#endif
	return rxdata;	    
}

void write_cmd(unsigned char cmd)	//发送寄存器地址
{
	LCD_DC_Clr();//写命令
	LCD_CS_Clr();
	HAL_SPI_Transmit(&hspi1,&cmd,1,100);
	delay(1);
	LCD_CS_Set();
}

void write_dat(unsigned char dat)	//发送寄存器参数
{
	LCD_DC_Set();//写数据
	LCD_CS_Clr();
	SPI1_ReadWriteByte(dat);
	LCD_CS_Set();
}

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用STM32CubeMX配置STM32F103C8T6的OLED驱动代码。首先,您需要在STM32CubeMX中选择正确的MCU型号,然后添加相应的外设。在外设选项卡中,您可以找到OLED显示屏的选项。根据您的具体OLED显示屏型号,选择相应的驱动程序。在配置完成后,您可以生成代码并导出到您的开发环境中。 在生成的代码中,您可以找到OLED显示函数的调用实例。例如,您可以使用OLED_ShowChinese函数来显示中文字符,使用OLED_ShowChar函数来显示其他字符。这些函数可以根据您的需求进行调用,并指定字符的位置和大小。您还可以使用OLED_Refresh函数来刷新显示屏。 请注意,以上引用的代码片段仅提供了一种可能的实现方式,具体的配置和代码实现可能会根据您的具体需求和硬件环境而有所不同。建议您参考STM32CubeMX的官方文档和示例代码,以获得更详细的配置和使用说明。 #### 引用[.reference_title] - *1* *2* *3* [基于STM32F103C8T6最小系统板HAL库CubeMX SPI驱动7针 OLED显示屏(0.96寸 1.3寸通用)](https://blog.csdn.net/h568630659/article/details/124202967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值