HW_Lib/lib/tft/inc/tft.h

138 lines
3.3 KiB
C
Raw Normal View History

2024-09-16 14:51:12 +00:00
#ifndef HW_LIB_TFT_H
#define HW_LIB_TFT_H
2024-08-29 08:46:54 +00:00
#ifdef __cplusplus
extern "C" {
#endif
#include "stdint.h"
2024-09-16 14:51:12 +00:00
#include "stdlib.h"
2024-08-29 08:46:54 +00:00
#define REFRESH_CALL_ENABLE 1 //使用DMA或者整体刷新函数
#define HZK_FONT //使用HZK 12/16 字体 tools下可自由生成
#define UTF8_TO_UNICODE //启用UTF8转换显示
//#define LVGL_FONT //启用LVGL字体
2024-09-16 14:51:12 +00:00
#define TFT_ST7735
2024-08-29 08:46:54 +00:00
typedef struct TFT_Dev TFT_T;
/**
* @brief TFT
* @param data: []
* @param len: []
* @return uint8_t
*/
typedef uint8_t (*TFT_CMD_t)(uint8_t *data, size_t len);
/**
* @brief TFT
* @param data: []
* @param len: []
* @return uint8_t
*/
typedef uint8_t (*TFT_DATA_t)(uint8_t *data, size_t len);
2024-09-16 14:51:12 +00:00
/**
* @brief TFT
* @param data: []
* @param len: []
* @return uint8_t
*/
typedef uint8_t (*TFT_READ_t)(uint8_t *data, size_t len);
2024-08-29 08:46:54 +00:00
/**
* @brief TFT
2024-09-16 14:51:12 +00:00
* @param data: []
2024-08-29 08:46:54 +00:00
* @return uint8_t
*/
typedef uint8_t (*TFT_BLACKLIGHT_t)(uint8_t data);
2024-09-16 14:51:12 +00:00
/**
* @brief TFT
* @param ms: []
* @return uint8_t
*/
typedef uint8_t (*TFT_DELAY_t)(uint32_t ms);
2024-08-29 08:46:54 +00:00
#if REFRESH_CALL_ENABLE
2024-09-16 14:51:12 +00:00
/**
* @brief TFT
*/
typedef void (*TFT_REFRESH_t)(TFT_T *dev);
2024-08-29 08:46:54 +00:00
#endif
/**
* @brief TFT
*/
typedef enum {
IDLE, /**< 空闲状态 */
WRITE, /**< 写入状态 */
REFRESH, /**< 刷新状态 */
} TFT_STATE_T;
2024-09-16 14:51:12 +00:00
typedef enum {
LONGITUDINAL,/* 液晶屏纵向选择 */
LONGITUDINAL_180,/* 液晶屏纵向旋转 180° 方向选择 */
HORIZONTAL,/* 液晶屏横向选择 */
HORIZONTAL_180,/* 液晶屏横向旋转 180° 方向选择 */
} TFT_DIR_T;
typedef union TFT_Color {
uint16_t color;
uint16_t u16;
uint8_t u8[2];
} TFT_Color_t;
2024-08-29 08:46:54 +00:00
/**
* @brief TFT
*/
struct TFT_Dev {
2024-09-16 14:51:12 +00:00
TFT_DIR_T dir: 4; /**< 显示方向 */
TFT_STATE_T state: 4; /**< TFT状态 */
uint16_t width; /**< 显示宽度 */
uint16_t height; /**< 显示高度 */
2024-08-29 08:46:54 +00:00
TFT_CMD_t cmd; /**< TFT命令处理函数指针 */
TFT_DATA_t data; /**< TFT数据处理函数指针 */
2024-09-16 14:51:12 +00:00
TFT_READ_t read; /**< TFT数据读取函数指针 */
2024-08-29 08:46:54 +00:00
TFT_BLACKLIGHT_t blacklight; /**< TFT背光控制函数指针 */
2024-09-16 14:51:12 +00:00
TFT_DELAY_t delay; /**< TFT延迟函数指针类型 */
2024-08-29 08:46:54 +00:00
#if REFRESH_CALL_ENABLE
TFT_REFRESH_t call; /**< TFT刷新函数指针 */
#endif
};
2024-09-16 14:51:12 +00:00
extern TFT_Color_t POINT_COLOR;
extern TFT_Color_t BACK_COLOR;
void TFT_Init(TFT_T dev);
uint32_t TFT_ReadID(TFT_T dev);
void TFT_SetDir(TFT_T dev, TFT_DIR_T dir);
2024-08-29 08:46:54 +00:00
2024-09-16 14:51:12 +00:00
#ifdef LVGL_FONT
#include "lvgl_font.h"
/**
* @brief TFT
* @param dev: [] TFT
* @param font: []
* @param s: []
* @param x: [] x
* @param y: [] y
* @return void
* @example TFT_DisplayString(&oled_device, &font_arial_16, "Hello World", 10, 20);
**/
void TFT_DisplayString(TFT_T *dev, const lv_font_t *font, uint8_t *s, uint16_t x, uint16_t y);
#endif
2024-08-29 08:46:54 +00:00
#ifdef __cplusplus
}
#endif
2024-09-16 14:51:12 +00:00
#endif //HW_LIB_TFT_H