stm32f103驱动st7789的代码
时间: 2023-03-24 20:03:59 浏览: 148
我可以回答这个问题。以下是一个可能的 stm32f103 驱动 st7789 的代码示例:
```
#include "stm32f10x.h"
#include "st7789.h"
void SPI1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
SPI_InitTypeDef SPI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_Cmd(SPI1, ENABLE);
}
void ST7789_WriteCommand(uint8_t cmd)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_4);
SPI_I2S_SendData(SPI1, cmd);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET);
}
void ST7789_WriteData(uint8_t data)
{
GPIO_SetBits(GPIOA, GPIO_Pin_4);
SPI_I2S_SendData(SPI1, data);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET);
}
void ST7789_Init(void)
{
SPI1_Init();
ST7789_WriteCommand(x11); // Sleep Out
ST7789_WriteCommand(x36); // Memory Data Access Control
ST7789_WriteData(x00);
ST7789_WriteCommand(x3A); // Interface Pixel Format
ST7789_WriteData(x05);
ST7789_WriteCommand(xB2); // Porch Setting
ST7789_WriteData(xC);
ST7789_WriteData(xC);
ST7789_WriteData(x00);
ST7789_WriteData(x33);
ST7789_WriteData(x33);
ST7789_WriteCommand(xB7); // Gate Control
ST7789_WriteData(x35);
ST7789_WriteCommand(xBB); // VCOM Setting
ST7789_WriteData(x19);
ST7789_WriteCommand(xC); // LCM Control
ST7789_WriteData(x2C);
ST7789_WriteCommand(xC2); // VDV and VRH Command Enable
ST7789_WriteData(x01);
ST7789_WriteData(xFF);
ST7789_WriteData(xFF);
ST7789_WriteCommand(xC3); // VRH Set
ST7789_WriteData(x11);
ST7789_WriteCommand(xC4); // VDV Set
ST7789_WriteData(x20);
ST7789_WriteCommand(xC6); // Frame Rate Control
ST7789_WriteData(xF);
ST7789_WriteCommand(xD); // Power Control 1
ST7789_WriteData(xA4);
ST7789_WriteData(xA1);
ST7789_WriteCommand(xE); // Positive Gamma Correction
ST7789_WriteData(xD);
ST7789_WriteData(x00);
ST7789_WriteData(x05);
ST7789_WriteData(xE);
ST7789_WriteData(x15);
ST7789_WriteData(xD);
ST7789_WriteData(x37);
ST7789_WriteData(x43);
ST7789_WriteData(x47);
ST7789_WriteData(x09);
ST7789_WriteData(x15);
ST7789_WriteData(x12);
ST7789_WriteData(x16);
ST7789_WriteCommand(xE1); // Negative Gamma Correction
ST7789_WriteData(xD);
ST7789_WriteData(x00);
ST7789_WriteData(x05);
ST7789_WriteData(xD);
ST7789_WriteData(xC);
ST7789_WriteData(x06);
ST7789_WriteData(x2D);
ST7789_WriteData(x44);
ST7789_WriteData(x40);
ST7789_WriteData(xE);
ST7789_WriteData(x1C);
ST7789_WriteData(x18);
ST7789_WriteData(x16);
ST7789_WriteCommand(x29); // Display On
}
```
这是一个简单的例子,仅用于参考。实际上,驱动 ST7789 的代码可能会更复杂,具体取决于你的应用场景和需求。
阅读全文
相关推荐














