Files
DS_ST7789V/Inc/DS_ST7789V.h
Mikhail 43e710eb8c Первая итерация.
Базовая инициализация, и отрисовка прямоугольников
2026-06-21 21:45:38 +03:00

83 lines
3.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef DS_ST7789V_H
#define DS_ST7789V_H
#include <stdint.h>
#ifdef STM32G030xx
#include "stm32g0xx_hal.h"
#endif
#ifdef STM32G0B1xx
#include "stm32g0xx_hal.h"
#endif
#ifdef STM32F030xx
#include "stm32f0xx_hal.h"
#endif
/* Параметры дисплея */
#define DS_ST7789V_WIDTH 240
#define DS_ST7789V_HEIGHT 320
/* Основные команды контроллера ST7789V */
#define ST7789V_CMD_NOP 0x00
#define ST7789V_CMD_SWRESET 0x01
#define ST7789V_CMD_SLPOUT 0x11
#define ST7789V_CMD_INVOFF 0x20
#define ST7789V_CMD_INVON 0x21
#define ST7789V_CMD_DISPOFF 0x28
#define ST7789V_CMD_DISPON 0x29
#define ST7789V_CMD_CASET 0x2A
#define ST7789V_CMD_RASET 0x2B
#define ST7789V_CMD_RAMWR 0x2C
#define ST7789V_CMD_MADCTL 0x36
#define ST7789V_CMD_COLMOD 0x3A
/* Варианты ориентации экрана */
typedef enum {
DS_ST7789V_ORIENTATION_PORTRAIT = 0,
DS_ST7789V_ORIENTATION_LANDSCAPE,
DS_ST7789V_ORIENTATION_PORTRAIT_REV,
DS_ST7789V_ORIENTATION_LANDSCAPE_REV
} DS_ST7789V_Orientation_t;
/* Структура конфигурации пинов (аналогично DS_Button) */
typedef struct {
GPIO_TypeDef *Port;
uint16_t Pin;
} DS_ST7789V_Pin_t;
/* Главная управляющая структура дисплея */
typedef struct DS_ST7789V {
SPI_HandleTypeDef *hspi; // Указатель на аппаратный SPI
DS_ST7789V_Pin_t CS; // Пин выбора чипа
DS_ST7789V_Pin_t DC; // Пин выбор Команда/Данные
DS_ST7789V_Pin_t RES; // Пин аппаратного сброса
uint16_t Width; // Текущая ширина с учетом поворота
uint16_t Height; // Текущая высота с учетом поворота
DS_ST7789V_Orientation_t Orientation; // Текущая ориентация
} DS_ST7789V;
/**@brief Инициализация дескриптора дисплея и передача начальных команд
@param lcd Указатель на структуру дисплея
@param hspi Указатель на сгенерированный CubeMX интерфейс SPI*/
void DS_ST7789V_Init(DS_ST7789V *lcd, SPI_HandleTypeDef *hspi,
GPIO_TypeDef *cs_port, uint16_t cs_pin,
GPIO_TypeDef *dc_port, uint16_t dc_pin,
GPIO_TypeDef *res_port, uint16_t res_pin);
/**@brief Установка ориентации экрана*/
void DS_ST7789V_SetOrientation(DS_ST7789V *lcd,
DS_ST7789V_Orientation_t orientation);
/**@brief Заливка экрана или выделенной области цветом (RGB565)*/
void DS_ST7789V_FillRect(DS_ST7789V *lcd, uint16_t x, uint16_t y, uint16_t w,
uint16_t h, uint16_t color);
/**@brief Низкоуровневые функции отправки (могут использоваться для кастомных
* оптимизаций)*/
void DS_ST7789V_WriteCommand(DS_ST7789V *lcd, uint8_t cmd);
void DS_ST7789V_WriteData(DS_ST7789V *lcd, uint8_t *data, uint16_t size);
#endif // DS_ST7789V_H