#ifndef __USART_H__ #define __USART_H__ #include "main.h" #define U1_TXBUFF_SIZE 1024 //定义串口1 发送缓冲区大小 #define U2_TXBUFF_SIZE 2048 //定义串口2 发送缓冲区大小 #define U2_RXBUFF_SIZE 2048 //定义串口2 接收缓冲区大小 #define U2_RXMAX_SIZE 256 //定义串口2 单次接收最大数据量 #define U3_TXBUFF_SIZE 1024 //定义串口3 发送缓冲区大小 #define U3_RXBUFF_SIZE 1024*8 //定义串口3 接收缓冲区大小 #define U3_RXMAX_SIZE 512 //定义串口3 单次接收最大数据量 #define TX_NUM 10 //标记接收数据起始、截止位置的结构体数组成员数量 #define RX_NUM 10 //标记发送数据起始、截止位置的结构体数组成员数量 typedef struct { uint8_t *StartPtr; //标记数据的起始位置 uint8_t *EndPtr; //标记数据的截止位置 uint32_t Timecounter; //记录数据接收的时基 } USART_LocationPtrCB; //标记数据起始、截止位置的结构体 typedef struct { uint32_t Usart_RxCounter; //累计接收缓冲区存放的数据量 uint32_t Usart_TxCounter; //累计发送缓冲区存放的数据量 uint32_t Usart_TxTimer; //发送间隔时间变量 uint8_t Usart_TxCpltflag; //发送完成的标志 0:空闲 1:发送中 USART_LocationPtrCB Usart_RxLocation[RX_NUM]; //标记接收数据起始、截止位置的结构体的数组 USART_LocationPtrCB *UsartRxDataInPtr; //指向标记接收数据起始、截止位置的结构体的数组的插入数据的位置 USART_LocationPtrCB *UsartRxDataOutPtr; //指向标记接收数据起始、截止位置的结构体的数组的提取数据的位置 USART_LocationPtrCB *UsartRxDataEndPtr; //指向标记接收数据起始、截止位置的结构体的数组的结尾成员的位置 USART_LocationPtrCB Usart_TxLocation[TX_NUM]; //标记发送数据起始、截止位置的结构体的数组 USART_LocationPtrCB *UsartTxDataInPtr; //指向标记发送数据起始、截止位置的结构体的数组的插入数据的位置 USART_LocationPtrCB *UsartTxDataOutPtr; //指向标记发送数据起始、截止位置的结构体的数组的提取数据的位置 USART_LocationPtrCB *UsartTxDataEndPtr; //指向标记发送数据起始、截止位置的结构体的数组的结尾成员的位置 UART_HandleTypeDef USART_Handler; //串口设置句柄 DMA_HandleTypeDef USART_RxDMA; //配置接收 DMA的句柄 DMA_HandleTypeDef USART_TxDMA; //配置发送 DMA的句柄 } USART_ControlCB; extern USART_ControlCB UART1_ControlCB; //外部变量声明,串口1控制结构体 extern USART_ControlCB UART2_ControlCB; //外部变量声明,串口2控制结构体 extern USART_ControlCB UART3_ControlCB; //外部变量声明,串口3控制结构体 extern uint8_t U1_TxBuff[U1_TXBUFF_SIZE]; //外部变量声明,串口1发送缓冲区 extern uint8_t U2_TxBuff[U2_TXBUFF_SIZE]; //外部变量声明,串口2发送缓冲区 extern uint8_t U2_RxBuff[U2_RXBUFF_SIZE]; //外部变量声明,串口2发接收冲区 extern uint8_t U2_CopyBuff[U2_RXMAX_SIZE + 1]; //外部变量声明,串口2拷贝接收数据 extern uint8_t U3_TxBuff[U3_TXBUFF_SIZE]; //外部变量声明,串口3发送缓冲区 extern uint8_t U3_RxBuff[U3_RXBUFF_SIZE]; //外部变量声明,串口3发接收冲区 void usart1Init(uint32_t); //函数声明,初始化串口1 void u1_printf(char* fmt,...); //函数声明,串口1 printf函数 void usart2Init(uint32_t); //函数声明,初始化串口2 void u2_printf(char* fmt,...); //函数声明,串口2 printf函数 void u2_TxData(uint8_t *, uint16_t); //函数声明,串口2发送数据 void u2_BuffInit(void); //函数声明,初始化串口2收发缓冲区以及各个指针 void u2_TxDataBuf(uint8_t *, uint32_t); //函数声明,向发送缓冲区添加数据 void usart3Init(uint32_t); //函数声明,初始化串口3 void u3_printf(char* fmt,...); //函数声明,串口3 printf函数 void u3_TxData(uint8_t *, uint16_t); void u3_BuffInit(void); void u3_TxDataBuf(uint8_t *, uint32_t); void usart2RxHandle(void); void usart2TxHandle(void); void usart3RxHandle(void); void usart3TxHandle(void); #endif /*__USART_H__*/