st7735.h 6.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/**
  ******************************************************************************
  * @file    st7735.h
  * @author  MCD Application Team
  * @brief   This file contains all the functions prototypes for the st7735.c
  *          driver.
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
  * All rights reserved.</center></h2>
  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                        opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef ST7735_H
#define ST7735_H

#ifdef __cplusplus
 extern "C" {
csdn_JZ_'s avatar
csdn_JZ_ 已提交
27
#endif
28 29 30 31 32 33 34

/* Includes ------------------------------------------------------------------*/
#include "st7735_reg.h"
#include <stddef.h>

/** @addtogroup BSP
  * @{
csdn_JZ_'s avatar
csdn_JZ_ 已提交
35
  */
36 37 38

/** @addtogroup Components
  * @{
csdn_JZ_'s avatar
csdn_JZ_ 已提交
39 40
  */

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
/** @defgroup ST7735 ST7735
  * @{
  */

/** @defgroup ST7735_Exported_Types Exported Types
  * @{
  */
typedef int32_t (*ST7735_Init_Func)     (void);
typedef int32_t (*ST7735_DeInit_Func)   (void);
typedef int32_t (*ST7735_GetTick_Func)  (void);
typedef int32_t (*ST7735_Delay_Func)    (uint32_t);
typedef int32_t (*ST7735_WriteReg_Func) (uint8_t, uint8_t*, uint32_t);
typedef int32_t (*ST7735_ReadReg_Func)  (uint8_t, uint8_t*);
typedef int32_t (*ST7735_SendData_Func) (uint8_t*, uint32_t);
typedef int32_t (*ST7735_RecvData_Func) (uint8_t*, uint32_t);

typedef struct
{
  ST7735_Init_Func          Init;
  ST7735_DeInit_Func        DeInit;
csdn_JZ_'s avatar
csdn_JZ_ 已提交
61
  uint16_t                  Address;
62 63 64 65
  ST7735_WriteReg_Func      WriteReg;
  ST7735_ReadReg_Func       ReadReg;
  ST7735_SendData_Func      SendData;
  ST7735_RecvData_Func      RecvData;
csdn_JZ_'s avatar
csdn_JZ_ 已提交
66
  ST7735_GetTick_Func       GetTick;
67 68
} ST7735_IO_t;

csdn_JZ_'s avatar
csdn_JZ_ 已提交
69

70 71 72
typedef struct
{
  ST7735_IO_t         IO;
csdn_JZ_'s avatar
csdn_JZ_ 已提交
73
  st7735_ctx_t        Ctx;
74 75 76 77 78 79 80 81 82 83 84
  uint8_t             IsInitialized;
} ST7735_Object_t;

typedef struct
{
  /* Control functions */
  int32_t (*Init             )(ST7735_Object_t*, uint32_t, uint32_t);
  int32_t (*DeInit           )(ST7735_Object_t*);
  int32_t (*ReadID           )(ST7735_Object_t*, uint32_t*);
  int32_t (*DisplayOn        )(ST7735_Object_t*);
  int32_t (*DisplayOff       )(ST7735_Object_t*);
csdn_JZ_'s avatar
csdn_JZ_ 已提交
85 86
  int32_t (*SetBrightness    )(ST7735_Object_t*, uint32_t);
  int32_t (*GetBrightness    )(ST7735_Object_t*, uint32_t*);
87 88 89 90
  int32_t (*SetOrientation   )(ST7735_Object_t*, uint32_t);
  int32_t (*GetOrientation   )(ST7735_Object_t*, uint32_t*);

  /* Drawing functions*/
csdn_JZ_'s avatar
csdn_JZ_ 已提交
91
  int32_t ( *SetCursor       ) (ST7735_Object_t*, uint32_t, uint32_t);
92
  int32_t ( *DrawBitmap      ) (ST7735_Object_t*, uint32_t, uint32_t, uint8_t *);
csdn_JZ_'s avatar
csdn_JZ_ 已提交
93
  int32_t ( *FillRGBRect     ) (ST7735_Object_t*, uint32_t, uint32_t, uint8_t*, uint32_t, uint32_t);
94 95 96 97 98 99 100
  int32_t ( *DrawHLine       ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t);
  int32_t ( *DrawVLine       ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t);
  int32_t ( *FillRect        ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
  int32_t ( *GetPixel        ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t*);
  int32_t ( *SetPixel        ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t);
  int32_t ( *GetXSize        ) (ST7735_Object_t*, uint32_t *);
  int32_t ( *GetYSize        ) (ST7735_Object_t*, uint32_t *);
csdn_JZ_'s avatar
csdn_JZ_ 已提交
101

102
}ST7735_LCD_Drv_t;
csdn_JZ_'s avatar
csdn_JZ_ 已提交
103

104 105
/**
  * @}
csdn_JZ_'s avatar
csdn_JZ_ 已提交
106
  */
107 108 109 110 111

/** @defgroup ST7735_Exported_Constants Exported Constants
  * @{
  */

csdn_JZ_'s avatar
csdn_JZ_ 已提交
112 113 114
/**
  * @brief  ST7735 Size
  */
115 116 117
#define ST7735_OK                (0)
#define ST7735_ERROR             (-1)

csdn_JZ_'s avatar
csdn_JZ_ 已提交
118 119 120
/**
  * @brief  ST7735 ID
  */
121
#define  ST7735_ID              0x5CU
csdn_JZ_'s avatar
csdn_JZ_ 已提交
122 123 124 125

/**
  * @brief  ST7735 Size
  */
126 127 128 129 130 131 132 133
#define  ST7735_WIDTH           80U
#define  ST7735_HEIGHT          160U

/**
 *  @brief LCD_OrientationTypeDef
 *  Possible values of Display Orientation
 */
#define ST7735_ORIENTATION_PORTRAIT         0x00U /* Portrait orientation choice of LCD screen               */
csdn_JZ_'s avatar
csdn_JZ_ 已提交
134
#define ST7735_ORIENTATION_PORTRAIT_ROT180  0x01U /* Portrait rotated 180° orientation choice of LCD screen  */
135
#define ST7735_ORIENTATION_LANDSCAPE        0x02U /* Landscape orientation choice of LCD screen              */
csdn_JZ_'s avatar
csdn_JZ_ 已提交
136
#define ST7735_ORIENTATION_LANDSCAPE_ROT180 0x03U /* Landscape rotated 180° orientation choice of LCD screen */
137 138

/**
csdn_JZ_'s avatar
csdn_JZ_ 已提交
139
 *  @brief  Possible values of pixel data format (ie color coding)
140
 */
csdn_JZ_'s avatar
csdn_JZ_ 已提交
141
#define ST7735_FORMAT_RBG444                0x03U /* Pixel format chosen is RGB444 : 12 bpp */
142 143 144 145 146 147
#define ST7735_FORMAT_RBG565                0x05U /* Pixel format chosen is RGB565 : 16 bpp */
#define ST7735_FORMAT_RBG666                0x06U /* Pixel format chosen is RGB666 : 18 bpp */
#define ST7735_FORMAT_DEFAULT               ST7735_FORMAT_RBG565
/**
  * @}
  */
csdn_JZ_'s avatar
csdn_JZ_ 已提交
148

149 150
/** @defgroup ST7735_Exported_Functions Exported Functions
  * @{
csdn_JZ_'s avatar
csdn_JZ_ 已提交
151
  */
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
int32_t ST7735_RegisterBusIO (ST7735_Object_t *pObj, ST7735_IO_t *pIO);
int32_t ST7735_Init(ST7735_Object_t *pObj, uint32_t ColorCoding, uint32_t Orientation);
int32_t ST7735_DeInit(ST7735_Object_t *pObj);
int32_t ST7735_ReadID(ST7735_Object_t *pObj, uint32_t *Id);
int32_t ST7735_DisplayOn(ST7735_Object_t *pObj);
int32_t ST7735_DisplayOff(ST7735_Object_t *pObj);
int32_t ST7735_SetBrightness(ST7735_Object_t *pObj, uint32_t Brightness);
int32_t ST7735_GetBrightness(ST7735_Object_t *pObj, uint32_t *Brightness);
int32_t ST7735_SetOrientation(ST7735_Object_t *pObj, uint32_t Orientation);
int32_t ST7735_GetOrientation(ST7735_Object_t *pObj, uint32_t *Orientation);

int32_t ST7735_SetCursor(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos);
int32_t ST7735_DrawBitmap(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint8_t *pBmp);
int32_t ST7735_FillRGBRect(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint8_t *pData, uint32_t Width, uint32_t Height);
int32_t ST7735_DrawHLine(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Length, uint32_t Color);
int32_t ST7735_DrawVLine(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Length, uint32_t Color);
int32_t ST7735_FillRect(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Width, uint32_t Height, uint32_t Color);
int32_t ST7735_SetPixel(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Color);
int32_t ST7735_GetPixel(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t *Color);
int32_t ST7735_GetXSize(ST7735_Object_t *pObj, uint32_t *XSize);
int32_t ST7735_GetYSize(ST7735_Object_t *pObj, uint32_t *YSize);

extern ST7735_LCD_Drv_t   ST7735_LCD_Driver;

/**
  * @}
csdn_JZ_'s avatar
csdn_JZ_ 已提交
178 179
  */

180 181 182 183 184 185 186 187
#ifdef __cplusplus
}
#endif

#endif /* ST7735_H */

/**
  * @}
csdn_JZ_'s avatar
csdn_JZ_ 已提交
188
  */
189 190 191

/**
  * @}
csdn_JZ_'s avatar
csdn_JZ_ 已提交
192
  */
193 194 195 196

/**
  * @}
  */
csdn_JZ_'s avatar
csdn_JZ_ 已提交
197

198
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/