⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hmi.h

📁 STM32,5110液晶显示超声波测距探鱼器200KHz,带电路图,精确到厘米
💻 H
字号:
#ifndef __HMI_H
#define __HMI_H

#include "GlobalVAR.h"

#define LCD_MASTER_SPI          		SPI1
#define LCD_MASTER_DMA					RCC_AHBPeriph_DMA1
#define LCD_MASTER_TX_DR_ADD    		0x4000300C
#define HMI_RESET_TIME					200		// ms

#define HMI_QUEUE_LEN					32		// There can be 16 task waiting in the HMI to do list Queue
#define HMI_QUEUE_SYS_LEN		    	4		// There can be 8 task for system use like heap full, error...
#define HMI_NO_BUS_QUEUE_LEN      		4


#define HMI_ROW_NUM						(HMI_HEIGHT_PIX / HMI_ROW_WIDTH)
#define HMI_COL_NUM						HMI_WIDTH_PIX
#define MAX_DISPLAY_BUF					(HMI_ROW_NUM * HMI_COL_NUM)

#define HMI_LOCATE_CMD_STREAM_SIZE    	2
#define X_COORDINATE_MASK             	0x80
#define Y_COORDINATE_MASK             	0x40

#define MAX_BL_TEST_BLINK_INTER			200	// 200ms
#define MAX_BL_TEST_BLINK_NUM			7

#define FILL_DEPTH_CURVE_GBUF			0xFF
#define MAX_MAX_DEPTH_IN_CM_DIGIT_NUM	5

#include "HMIPic.h"

typedef enum {	
    HMI_STATE_IDLE = 0,
	HMI_STATE_CONFIG,
    HMI_STATE_RESETING,
    HMI_STATE_INITIAL,
    HMI_STATE_EXE_QUEUE,
    HMI_STATE_COUNT
} TYPE_HMI_STATE;

// The functions end WO "ex" is first write to STM32 internal RAM then flush to LCD, they will ONLY return "FINISHIED"
// The ones end with "ex" is used to directly write to LCD, they may return "WORKING", indicating work hasn't done yet
WorkingStatus HMI_CMD_Stream(void *HMI_CMD_Para);

WorkingStatus HMI_Draw_Point_Data(void *HMI_Draw_Para);
WorkingStatus HMI_Draw_Line_Data(void *HMI_Draw_Para);
WorkingStatus HMI_Draw_Rect_Data(void *HMI_Draw_Para);
WorkingStatus HMI_Draw_Char_Data(void *HMI_Draw_Para);
WorkingStatus HMI_Draw_String_Data(void *HMI_Draw_Para);
WorkingStatus HMI_Draw_Pic_Data(void *HMI_Draw_Para);
WorkingStatus HMI_Draw_Image_Shift_Data(void *HMI_Draw_Para);

WorkingStatus HMI_BL_Blink(void *HMI_Draw_Para);

WorkingStatus (*HMI_Function_Array[ENUM_HMI_FUNC_CNT])() = {NULL, HMI_CMD_Stream, 
															HMI_Draw_Point_Data, 
															HMI_Draw_Line_Data, 
															HMI_Draw_Rect_Data, 
															HMI_Draw_Char_Data, 
															HMI_Draw_String_Data, 
															HMI_Draw_Pic_Data,
															HMI_Draw_Image_Shift_Data, 
															HMI_BL_Blink};

const uint8_t const_HMI_Display_Blank[] = {0x08, 0x0C};
const uint8_t const_HMI_Startup_Config[] = {0x21, 0xC2, 0x04, 0x13, 0x20, 0x0C};												

const char const_HMI_PositiveColor_CMD[] = {0x0C, 0x00};	// Add 0x00 to use strlen, to make HMI_Set_Negative_Color and 
const char const_HMI_NegativeColor_CMD[] = {0x0D, 0x00};	// HMI_Set_Positive_Color to one routine HMI_Set_Color_Type

static uint8_t HMI_BL_Test_Stage;
static struct_HMI_Queue gHMI_Queue[HMI_QUEUE_LEN + HMI_QUEUE_SYS_LEN];
static struct_HMI_Queue gHMI_Queue_NoBus[HMI_NO_BUS_QUEUE_LEN];
static TYPE_HMI_STATE sta_HMI_StateMachine = HMI_STATE_IDLE;
static uint8_t sta_QueueIndex = 0;  // Used by execute queue slot and also find queue slot which will use SPI 
static uint8_t sta_QueueIndex_NoBus = 0;	// Used by execute queue slot and also find queue slot which will NOT use SPI 
static uint8_t sta_LCD_Graphic_BUF[HMI_ROW_NUM][HMI_COL_NUM];
static DMA_InitTypeDef  sta_LCD_MASTER_DMA_InitStructure;	// Because the DMA TX's length can be adjusted according to 
												// need to send's buffer length, used static can avoid reassignment

extern uint16_t receivedRawData[];
extern uint16_t *pReceivedRawData;
extern uint8_t receivedProcessedData[];
//extern uint8_t *pReceivedProcessedData;
extern uint16_t gMaxDepthInCM;
extern uint16_t gMinDepthInCM;
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -