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();
}