#ifndef _USART_H #define _USART_H //#ifdef __cplusplus // extern "C" { //#endif ////////////////////////////////////////////////////////////////////////////////// //#include "stm32l4xx.h" //#include "General_type.h" //#include "stdio.h" //#define DEBUG_MODE ////#define BAD_DEBUG //旧板子的PD2 控制usart1的发送脚不能拉高了,所以换个引脚 ////#define Board_VerE ////#define TRANS_SPECIAL //#ifndef IN_USART //#define EX_USART extern // #else //#define EX_USART //#endif //#ifdef Board_VerE // #define UART_RD1_PIN GPIO_PIN_3 // #define UART_RD1_PORT GPIOB // #define UART1_RX_PIN GPIO_PIN_10 // #define UART1_PORT GPIOA // #define UART1_TX_PIN GPIO_PIN_9 //#else // // #ifdef BAD_DEBUG // #define UART_RD1_PIN GPIO_PIN_3 // #define UART_RD1_PORT GPIOB // #else // #define UART_RD1_PIN GPIO_PIN_8 // #define UART_RD1_PORT GPIOB // #endif // #define UART1_RX_PIN GPIO_PIN_10//GPIO_PIN_7 // #define UART1_PORT GPIOA//GPIOB // #define UART1_TX_PIN GPIO_PIN_9//GPIO_PIN_6 //#endif //#define RX1_UART() HAL_GPIO_WritePin(UART_RD1_PORT,UART_RD1_PIN,GPIO_PIN_RESET) //#define TX1_UART() HAL_GPIO_WritePin(UART_RD1_PORT,UART_RD1_PIN,GPIO_PIN_SET) ////#define UART3_RD_PIN GPIO_PIN_15 ////#define UART3_RD_PORT GPIOA ////#define UART3_RX_PIN GPIO_PIN_11 ////#define UART3_PORT GPIOC ////#define UART3_TX_PIN GPIO_PIN_10 ////#define RX3_UART() HAL_GPIO_WritePin(UART3_RD_PORT,UART3_RD_PIN,GPIO_PIN_RESET) ////#define TX3_UART() HAL_GPIO_WritePin(UART3_RD_PORT,UART3_RD_PIN,GPIO_PIN_SET) //#define USART3_RX_LEN 100 //#define USART1_TX_LEN 150 //定义最大接收字节数 200 //#define USART1_RX_LEN 50 //#define RADDR 0x1037 ////#define RADDR 0x1037 ////EX_USART u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符 ////EX_USART u16 USART_RX_STA; //接收状态标记 ////EX_USART UART_HandleTypeDef UART1_Handler; //UART句柄 //EX_USART UART_HandleTypeDef huart1;//,huart3; //EX_USART DMA_HandleTypeDef hdma_usart1_rx; //EX_USART DMA_HandleTypeDef hdma_usart1_tx; //typedef struct{ // uint8_t TxBuff[USART1_TX_LEN]; // uint16_t TxSize; // uint8_t Tx_end_flag; // uint8_t RxBuff[USART1_RX_LEN]; // uint8_t aRxBuff; // uint16_t RxSize; // uint8_t Rx_flag; //}USART_BuffTypeDef; //EX_USART USART_BuffTypeDef usart1_buf,usart3_buf; //EX_USART uint8_t wireless_data[50]; ////如果想串口中断接收,请不要注释以下宏定义 ////EX_USART void uart3_init(u32 bound); //EX_USART void debug_printf(char *information,int len); //EX_USART void MX_USART1_UART_Init(uint32_t bound); //EX_USART void uart_init(uint32_t bound); //EX_USART void HAL_UART_IDLECallback(UART_HandleTypeDef *huart); //EX_USART void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); //EX_USART void MX_DMA_Init(void) ; //EX_USART void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); //EX_USART void Error_Handler(uint8_t flag); ////EX_USART void Error_Handler(uint8_t flag); //#ifdef __cplusplus //} //#endif //#endif //#include "stdio.h" //#include "./SYSTEM/sys/sys.h" #include "main.h" //#include "stm32l433xx.h" //#include "stm32l4xx.h" #include "General_type.h" //#include "system.h" #include #include #define COMM_FRAME_HEAD 0xAA #define COMPARE55 0x55 #define FREUENCYDATA 0x10 #define THORGHFARE0 0x80 #define THORGHFARE1 0x81 #define DIELECTRICLEGTH 0x08 //数据长度8 //串口1收发控制端 #define RS485_TX_EN HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET) #define RS485_RX_EN HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET) //串口2收发控制端 #define RS485_UART3TX_EN HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_SET) #define RS485_UART3RX_EN HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_RESET) #define UART_RX_BUFFER_SIZE 128 #define UART_TX_BUFFER_SIZE 64 typedef enum { UART_OK, UART_ERROR, UART_BUSY } UART_Status; //*****************结构定义****************************************** enum tagUSARTSTATUS {RcvSyn,RcvtargetAddress,RcvsourceAddress,RcvLen,RcvaData,ChkSum,CmdOperate}; //串口接收状态,分为:接收同步位、接收首标识位、接收目的地址、接收源地址、接收数据长度、接收数据、校验、命令处理 struct tagUSARTDATA { unsigned char ucHead; //首标识位,数据帧的起始位 unsigned char ucRcvtargetAddress; //目的地址,1byte数据帧接收设备地址 unsigned char ucRcvsourceAddress; //源地址,1byte数据帧发送源设备地址 unsigned int ucRcvDataLen; unsigned char ucRepDataLen; unsigned char ucDataCount; //串口接收数据计数器 //unsigned char aData[170]; //数据位 unsigned char aData[50]; //数据位 unsigned char ucSendChkCrc ; //发送校验和 unsigned char ucReceiveChkCrc; //接收校验和 unsigned char ucCommand; //串口命令 enum tagUSARTSTATUS usStatus; //串口接收状态 unsigned char ucReptargetAddress; //目的地址,1byte数据帧接收设备地址 unsigned char ucRepsourceAddress; //源地址,1byte数据帧发送源设备地址 unsigned int ucOverTimeCnt; }; extern struct tagUSARTDATA g_udUsart3Data; //串口2 extern void UART_Init(uint32_t baudrate); extern void USART3_Init(uint32_t baudrate); extern void Init_485EN(void); extern void InitUart3_485EN(void); extern void UART_SendStr(uint8_t *PData,uint16_t Datalen); extern UART_Status UART_SendByte(uint8_t data); extern UART_Status UART_SendString(const char *str); extern UART_Status UART3_SendByte(uint8_t data); extern void UART3_SendStr(uint8_t *PData,uint16_t Datalen); extern void Uart3Rcv(unsigned char ucReadData); //串口2数据处理 extern void Uart3data_Processing(void); //串口2响应 #endif /* __UART_H */