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

📄 globalvar.h

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

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "stm32f10x.h"

#ifdef __VAR_DEFINE
	#define __GVAR
#else 
	#define __GVAR		extern
#endif

#define NULL 			0

#define SYSCLK_FREQ_72MHz               72000000
#define APB1CLK_FREQ_36MHz  		        36000000

#define LCD_MASTER_PORT							    GPIOA
#define LCD_MASTER_NSS_PIN              GPIO_Pin_4
#define LCD_MASTER_SCK_PIN              GPIO_Pin_5
#define LCD_MASTER_MISO_PIN             GPIO_Pin_6
#define LCD_MASTER_MOSI_PIN             GPIO_Pin_7

#define LCD_MASTER_DMA_IRQn						  DMA1_Channel3_IRQn
#define LCD_MASTER_DMA_IRQHandler			  DMA1_Channel3_IRQHandler
#define LCD_MASTER_DMA_IT_TC					  DMA1_IT_TC3
#define LCD_MASTER_DMA_CHN						  DMA1_Channel3	// SPI1_TX DMA
#define SIG_GEN_TIMER 				          TIM1
#define SIG_DETECT_TIMER 				        TIM2
#define GLB_FREERUN_TIMER 				      TIM3    // Without interrupt, evryone need to use this, divided in 1us per CNT

#define LCD_BACKLIGHT_PORT			      GPIOB
#define LCD_BACKLIGHT_PIN			        GPIO_Pin_9
#define LCD_DC_PORT					          GPIOA
#define LCD_DC_PIN					          GPIO_Pin_0
#define LCD_RST_PORT				          GPIOA
#define LCD_RST_PIN					          GPIO_Pin_1

#define SIG_RECV_EXTI_LINE			        EXTI_Line6

#define SIG_GEN_PULSE_SD_PORT		      GPIOB
#define SIG_GEN_PULSE_SD_PIN		      GPIO_Pin_15
#define SIG_GEN_PULSE_A_PORT		      GPIOB
#define SIG_GEN_PULSE_B_PORT		      GPIOA	
#define SIG_GEN_PULSE_A_PIN			      GPIO_Pin_13
#define SIG_GEN_PULSE_B_PIN			      GPIO_Pin_8
#define SIG_OUT_SW_PORT					      GPIOA
#define SIG_OUT_SW_PIN					      GPIO_Pin_10
#define SIG_RECV_SW_PORT					    GPIOB
#define SIG_RECV_SW_PIN					      GPIO_Pin_5

#define UART2_TX_PORT				          GPIOA
#define UART2_TX_PIN				          GPIO_Pin_2
#define UART2_RX_PORT				          GPIOA
#define UART2_RX_PIN				          GPIO_Pin_3

#define LSB_MASK					    	      0x01
#define HEAP_BASE_SCT						      0x20003000		// According to .sct file

#define HMI_WIDTH_PIX               	84
#define HMI_HEIGHT_PIX              	48
#define HMI_ROW_WIDTH					        8

typedef enum {FALSE = 0, TRUE = !FALSE} Boolean;
#define __IS_IN_HEAP(x)         (((uint32_t)(x) >= HEAP_BASE_SCT) ? TRUE : FALSE)

typedef enum {WORKING = 0, FINISHED = !WORKING} WorkingStatus;
typedef enum {HMI_COLOR_WHITE = 0, HMI_COLOR_BLACK = !HMI_COLOR_WHITE} HMIDrawColor;
typedef enum {IMAGE_SHIFT_LEFT = 0, IMAGE_SHIFT_RIGHT = !IMAGE_SHIFT_LEFT} ImageShiftDirect;

typedef enum {
	ENUM_HMI_NULL = 0,
	ENUM_HMI_CMD_STREAM,
  ENUM_HMI_DRAW_POINT_DATA,
  ENUM_HMI_DRAW_LINE_DATA,
  ENUM_HMI_DRAW_RECT_DATA,
  ENUM_HMI_DRAW_CHAR_DATA,
	ENUM_HMI_DRAW_STRING_DATA,
	ENUM_HMI_DRAW_PIC_DATA,
  ENUM_HMI_DRAW_IMAGE_SHIFT_DATA,
	ENUM_HMI_NO_BUS_TASK,
	ENUM_BL_BLINK = ENUM_HMI_NO_BUS_TASK,
	ENUM_HMI_FUNC_CNT
}HMIFunctionArray;

typedef enum {	
    HMI_TASK_TYPE_NULL = 0, 
    HMI_TASK_TYPE_BUS,
    HMI_TASK_TYPE_NO_BUS,
    HMI_TASK_TYPE_COUNT
} TYPE_HMI_TASK_TYPE;

#define IS_NO_BUS_TASK(x)		((x) >= ENUM_HMI_NO_BUS_TASK)
typedef struct
{
  uint8_t *DataList;
  uint8_t DataLen;
} struct_HMI_CMD_Para;

typedef struct
{
  uint8_t pointX;
  uint8_t pointY;
	HMIDrawColor color;
} struct_HMI_Draw_Para_Point;

typedef struct
{
  uint8_t startX;
  uint8_t startY;
  uint8_t endX;
  uint8_t endY;
	HMIDrawColor color;
} struct_HMI_Draw_Para_Line;

typedef struct
{
  uint8_t startX;
  uint8_t startY;
  uint8_t endX;
  uint8_t endY;
	HMIDrawColor color;
} struct_HMI_Draw_Para_Rect;

typedef struct
{
  uint8_t startX;
  uint8_t startY;
  char *ASCIIChar;
	HMIDrawColor color;
} struct_HMI_Draw_Para_Char;

typedef struct
{
  uint8_t startX;
  uint8_t startY;
  char *ASCIIString;
	HMIDrawColor color;
} struct_HMI_Draw_Para_String;

typedef struct
{
  uint8_t picID;
  uint8_t startX;
  uint8_t startY;
  uint8_t width;
  uint8_t height;
} struct_HMI_Draw_Para_Pic;

typedef struct
{
  uint8_t startX;
  uint8_t startY;
  uint8_t endX;
  uint8_t endY;
	ImageShiftDirect direction;
} struct_HMI_Draw_Para_Image_Shift;

typedef struct
{
  uint16_t Interval;
  uint8_t Number;
} struct_HMI_BL_Test;

typedef struct
{
    HMIFunctionArray HMI_Function_Index;
    void *HMI_Func_Para;
} struct_HMI_Queue;

__GVAR uint32_t gSystem_1ms_CNT;

//__GVAR uint8_t *CMDList;

//Used to find the BB start address of a 32bits variable
#define BITBAND_ADDRESS(x)			(((x) & 0xF0000000) + 0x02000000 + (((x) & 0xFFFFF) << 5))	
//Used to find the bit's BB address of a 32bits variable given address				
#define BITBAND(address,bit)		(*((volatile uint32_t*)(BITBAND_ADDRESS((uint32_t)(address)) + ((bit) << 2))))
//Used to find the bit's BB address of a 32bits variable given variable	
#define BITBAND_V(variable,bit)		(*((volatile uint32_t*)(BITBAND_ADDRESS((uint32_t)(&(variable))) + ((bit) << 2))))

__GVAR uint32_t Flag_Global_General_G01;
#define FLAG_HEAP_STATUS    		          BITBAND_V(Flag_Global_General_G01, 0)	 

__GVAR uint32_t Flag_SIG_General_G01;
#define FLAG_SIG_START_CONFIG		          BITBAND_V(Flag_SIG_General_G01, 0)	
#define FLAG_SIG_CRITICAL_TIM		          BITBAND_V(Flag_SIG_General_G01, 1)
#define FLAG_SIG_START_TX                 BITBAND_V(Flag_SIG_General_G01, 2)
#define FLAG_SIG_TX_FINISHED              BITBAND_V(Flag_SIG_General_G01, 3)
#define FLAG_SIG_CONTACT_RELAY            BITBAND_V(Flag_SIG_General_G01, 4)
#define FLAG_SIG_RELAY_CONTACTED          BITBAND_V(Flag_SIG_General_G01, 5)
#define FLAG_SIG_RECV_TIME_REACH          BITBAND_V(Flag_SIG_General_G01, 6)
#define FLAG_SIG_SUCC_RECVEIVED           BITBAND_V(Flag_SIG_General_G01, 7)
#define FLAG_SIG_NEW_DATA_INCOME          BITBAND_V(Flag_SIG_General_G01, 8)
#define FLAG_SIG_FISH_DETECT_RISING       BITBAND_V(Flag_SIG_General_G01, 9)
#define FLAG_SIG_FISH_DETECTED            BITBAND_V(Flag_SIG_General_G01, 10)

__GVAR uint32_t Flag_HMI_General_G01;		   	
#define FLAG_HMI_PWRON_RESET		              BITBAND_V(Flag_HMI_General_G01, 0)	 
#define FLAG_HMI_QUEUE_STATUS		              BITBAND_V(Flag_HMI_General_G01, 1)
#define FLAG_LCD_MASTER_DMA_TRANSMITTING	    BITBAND_V(Flag_HMI_General_G01, 2)
#define FLAG_HMI_DEPTH_CURVE_REDRAW 	        BITBAND_V(Flag_HMI_General_G01, 3)


__GVAR uint32_t Flag_Global_Error;		   	
#define FLAG_HEAP_FULL  		              BITBAND_V(Flag_Global_Error, 0)
#define FLAG_HMI_QUEUE_FULL	              BITBAND_V(Flag_Global_Error, 1)

#ifdef DEBUG
  #define UART_DEBUG_DMA_CHN  		      DMA1_Channel7
  #define UART_DEBUG_DMA_IT_TC		      DMA1_IT_TC7
  #define UART_DEBUG_DMA_IRQn						DMA1_Channel7_IRQn
  #define UART_DEBUG_DMA_IRQHandler			DMA1_Channel7_IRQHandler
  #define MAX_UART_DEBUG_LEN            128
  __GVAR uint32_t Flag_COM_General_G01;		 
  #define FLAG_UART_DEBUG_DMA_TRANSMITTING  BITBAND_V(Flag_COM_General_G01, 0)

  __GVAR void UART2_Debug_Print(char *printString); 
  __GVAR char COM_Print_Buffer[MAX_UART_DEBUG_LEN];
#endif

__GVAR void Occupy_Delay(uint32_t delayMs);
extern void memor(void *dest, const void *src, uint32_t size);
extern struct_HMI_Queue *HMI_Find_Queue_Slot(TYPE_HMI_TASK_TYPE taskType);

//extern WorkingStatus HMI_CMD_Stream(void *HMI_CMD_Para);
//extern WorkingStatus HMI_CMD_Exten(void *HMI_CMD_Para);

extern ErrorStatus HMI_Draw_Point(uint8_t pointX, uint8_t pointY, HMIDrawColor color);
extern ErrorStatus HMI_Draw_Line(uint8_t startX, uint8_t startY, uint8_t endX, uint8_t endY, HMIDrawColor color);
extern ErrorStatus HMI_Draw_Rect(uint8_t startX, uint8_t startY, uint8_t endX, uint8_t endY, HMIDrawColor color);
extern ErrorStatus HMI_Draw_Char(uint8_t startX, uint8_t startY, char ASCIIChar, HMIDrawColor color);
extern ErrorStatus HMI_Draw_String(uint8_t startX, uint8_t startY, char *ASCIIString, HMIDrawColor color);
extern ErrorStatus HMI_Draw_Pic(uint8_t picID, uint8_t startX, uint8_t startY, uint8_t width, uint8_t height);
extern ErrorStatus HMI_Draw_Image_Shift(uint8_t startX, uint8_t startY, uint8_t endX, uint8_t endY, ImageShiftDirect direction);

//extern WorkingStatus HMI_BL_Blink(void *HMI_Draw_Para);

extern WorkingStatus (*HMI_Function_Array[ENUM_HMI_FUNC_CNT])();

extern ErrorStatus newBLBlink(uint16_t blinkInterval, uint16_t blinkNumber);
extern ErrorStatus HMI_Set_Color_Type(char *const_HMI_Color_Type_CMD);

__GVAR EXTI_InitTypeDef   gEXTI_InitStructure;

#define GET_GLOBAL_FREERUN_US   TIM_GetCounter(GLB_FREERUN_TIMER)
#define LCD_BACKLIGHT_OFF       GPIO_SetBits(LCD_BACKLIGHT_PORT, LCD_BACKLIGHT_PIN)
#define LCD_BACKLIGHT_ON        GPIO_ResetBits(LCD_BACKLIGHT_PORT, LCD_BACKLIGHT_PIN)
#define MOSFET_DRIVER_ON        GPIO_SetBits(SIG_GEN_PULSE_SD_PORT, SIG_GEN_PULSE_SD_PIN)
#define MOSFET_DRIVER_OFF       GPIO_ResetBits(SIG_GEN_PULSE_SD_PORT, SIG_GEN_PULSE_SD_PIN)
#define OUTPUT_RELAY_CONTACT    GPIO_SetBits(SIG_OUT_SW_PORT, SIG_OUT_SW_PIN)
#define OUTPUT_RELAY_RELEASE    GPIO_ResetBits(SIG_OUT_SW_PORT, SIG_OUT_SW_PIN)
#define RECV_RELAY_CONTACT      GPIO_SetBits(SIG_RECV_SW_PORT, SIG_RECV_SW_PIN)
#define RECV_RELAY_RELEASE      GPIO_ResetBits(SIG_RECV_SW_PORT, SIG_RECV_SW_PIN)
#define OPEN_LOW_MOSFET_A       GPIO_ResetBits(SIG_GEN_PULSE_A_PORT, SIG_GEN_PULSE_A_PIN)
#define OPEN_LOW_MOSFET_B       GPIO_ResetBits(SIG_GEN_PULSE_B_PORT, SIG_GEN_PULSE_B_PIN)
#define ENABLE_SIG_EXTI         gEXTI_InitStructure.EXTI_LineCmd = ENABLE; \
                                EXTI_Init(&gEXTI_InitStructure)

#define DISABLE_SIG_EXTI        gEXTI_InitStructure.EXTI_LineCmd = DISABLE; \
                                EXTI_Init(&gEXTI_InitStructure)

#ifndef DEBUG
#define SET_UART2_TX_PIN        GPIO_SetBits(UART2_TX_PORT, UART2_TX_PIN)
#define RESET_UART2_TX_PIN      GPIO_ResetBits(UART2_TX_PORT, UART2_TX_PIN)
#define SET_UART2_RX_PIN        GPIO_SetBits(UART2_RX_PORT, UART2_RX_PIN)
#define RESET_UART2_RX_PIN      GPIO_ResetBits(UART2_RX_PORT, UART2_RX_PIN)
#endif

//#ifdef TESTPIN_ENABLE
//  #define TEST_PIN_1                    GPIO_Pin_6
//  #define TEST_PIN_2                    GPIO_Pin_5
//  #define TEST_PIN_3                    GPIO_Pin_7
//  #define TESTPIN_PORT_B                GPIOB
//  #define TEST_PIN_1_LOW                GPIO_ResetBits(TESTPIN_PORT_B, TEST_PIN_1)
//  #define TEST_PIN_2_LOW                GPIO_ResetBits(TESTPIN_PORT_B, TEST_PIN_2)
//  #define TEST_PIN_3_LOW                GPIO_ResetBits(TESTPIN_PORT_B, TEST_PIN_3)
//  #define TEST_PIN_1_HIGH               GPIO_SetBits(TESTPIN_PORT_B, TEST_PIN_1)
//  #define TEST_PIN_2_HIGH               GPIO_SetBits(TESTPIN_PORT_B, TEST_PIN_2)
//  #define TEST_PIN_3_HIGH               GPIO_SetBits(TESTPIN_PORT_B, TEST_PIN_3)
//#endif

#endif

⌨️ 快捷键说明

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