#ifndef __USART_H #define __USART_H #include #include #include #include "misc.h" #include "sys.h" #include "stm32f10x.h" #include "stm32f10x_usart.h" #include "stm32f10x_it.h" #include "dma.h" #include "syslib.h" /**************************************************************************** * 供外部使用的常变量 ****************************************************************************/ /**************************************************************************** *串口相关配置 ****************************************************************************/ #define UART_DEBUG COM5 //log输出重定向 #define UARTx_DMATX_EN 1 //uart1`uart4可以选择是否通过串口DMA发送数据 #define UART1_DMA_RX_MAXLEN 2560 //串口1 DMA接收一帧数据的最大长度 #define UART2_DMA_RX_MAXLEN 256 //串口2 DMA接收一帧数据的最大长度 #define UART3_DMA_RX_MAXLEN (1024*3) //串口3 DMA接收一帧数据的最大长度 #define UART4_DMA_RX_MAXLEN 256 //串口4 DMA接收一帧数据的最大长度 #define UART5_RX_MAXLEN 256 //串口5 接收缓冲区的最大长度 /**************************************************************************** * 系统层面错误LOG输出 ****************************************************************************/ #define SysErr(...) {printf("LogErr: %s,%d",__FILE__, __LINE__); printf(__VA_ARGS__) ;} //输出系统错误 #ifdef OPENSYSLOG #define SysLog(...) {printf("LogSys: "); printf(__VA_ARGS__) ;} //输出系统日志 #else #define SysLog(...) #endif /***************************************** *中断事件回调函数相关配置 ****************************************/ typedef void (*UARTFP)(char *recvBuf, uint16_t recvLen) ; //定义函数指针类型变量 /**************************************************************************** * 自定义数据类型 ****************************************************************************/ typedef enum { COM1 = 0 , COM2 = 1 , COM3 = 2 , COM4 = 3 , COM5 = 4 , COMSUM = 5 }COM_e ; /*端口号*/ /****************************************************************************/ /******************************************************************************** *供内部使用的函数声明 *********************************************************************************/ void Uart_Hook(COM_e eCOMn, char *recvBuf, uint16_t recvLen) ; //串口中断回调函数钩子函数 void UARTx_DmaTx_Init(COM_e eCOMn) ; //串口DMA发送初始化 void UARTx_DmaRx_Init(COM_e eCOMn ) ; //串口DMA接收初始化 void UART1_DMA_TX_TC_Callback_Functions(void) ; //串口1DMA发送完成中断回调函数 void UART2_DMA_TX_TC_Callback_Functions(void) ; //串口2DMA发送完成中断回调函数 void UART3_DMA_TX_TC_Callback_Functions(void) ; //串口3DMA发送完成中断回调函数 void UART4_DMA_TX_TC_Callback_Functions(void) ; //串口4DMA发送完成中断回调函数 void UART1_DMA_RX_TC_Callback_Functions(void) ; //串口1DMA接收完成中断回调函数 void UART2_DMA_RX_TC_Callback_Functions(void) ; //串口2DMA接收完成中断回调函数 void UART3_DMA_RX_TC_Callback_Functions(void) ; //串口3DMA接收完成中断回调函数 void UART4_DMA_RX_TC_Callback_Functions(void) ; //串口4DMA接收完成中断回调函数 /******************************************************************************** *对外接口函数声明 *********************************************************************************/ extern void UARTx_Init(COM_e eCOMn, uint32_t baudrate, uint16_t uartMode, IntPriority_e ePriority) ; //串口参数初始化 extern void UARTx_SendData(COM_e eCOMn, const char *Data, uint16_t len); //串口发送len长度的数据 extern void UARTx_SendString(COM_e eCOMn, uint8_t *sendString,...) ; //串口发送可变长数据 extern UARTFP Uart_RegHookCallback(COM_e eCOMn, UARTFP pCallback) ; //串口中断回调函数注册函数 extern void USART1_IRQHandler(void) ; //串口1中断处理函数 extern void USART2_IRQHandler(void) ; //串口2中断处理函数 extern void USART3_IRQHandler(void) ; //串口3中断处理函数 extern void UART4_IRQHandler(void) ; //串口4中断处理函数 extern void UART5_IRQHandler(void) ; //串口5中断处理函数 #endif