60 lines
1.9 KiB
C
60 lines
1.9 KiB
C
#ifndef _BSP_UART_H_
|
|
#define _BSP_UART_H_
|
|
|
|
#include "main.h"
|
|
#include "algo_Queue.h"
|
|
|
|
typedef struct bsp_Uart_t bsp_Uart_t;
|
|
|
|
|
|
#define usart_type UART_HandleTypeDef
|
|
#define dma_type DMA_HandleTypeDef
|
|
|
|
/*串口转发*/
|
|
typedef struct
|
|
{
|
|
u8 flag; /*串口转发标志位*/
|
|
bsp_Uart_t *uart; /*转发出去的串口*/
|
|
u16 time_out; /*转发超时时间*/
|
|
}bsp_uart_relay_t;
|
|
|
|
struct bsp_Uart_t
|
|
{
|
|
queue RxQueue; /*数据接收队列*/
|
|
usart_type *Uart; /*串口*/
|
|
|
|
dma_type *Tx_DMA; /*DMA*/
|
|
dma_type *Rx_DMA;
|
|
|
|
u8 Tx_DMA_CH;
|
|
u8 Rx_DMA_CH;
|
|
vu8 Tx_DMA_CompleteFlag; /*DMA接受完成标志位*/
|
|
|
|
u8 *Tx_Addr; /*DMA搬运缓冲*/
|
|
u8 *Rx_Addr;
|
|
u16 Tx_DMA_Len;
|
|
u16 Rx_DMA_Len;
|
|
|
|
u16 Rx_Len; /*接收到的数据长度*/
|
|
u16 Rx_TimeCount; /*超时计数*/
|
|
u16 Rx_TimeOver; /*超时时间*/
|
|
u8 Rx_StartFlag; /*开始超时计数标志位*/
|
|
|
|
|
|
bsp_uart_relay_t relay; /*串口转发*/
|
|
void (*Init)(bsp_Uart_t *); /*初始化*/
|
|
void (*Send)(bsp_Uart_t *,u8 *,u16); /*串口发送函数*/
|
|
|
|
void (*Tx_DMA_TCInt)(bsp_Uart_t *); /*DMA发送完成中断*/
|
|
|
|
void (*Rx_IdleInt)(bsp_Uart_t *); /*空闲中断*/
|
|
void (*Rx_TimeIncrementInt)(bsp_Uart_t *,u16); /*中断计数计数*/
|
|
void (*Rx_DataAnalysis)(u8 *,u16,void *); /*数据解析*/
|
|
void (*Rx_Task)(bsp_Uart_t *); /*串口接收任务*/
|
|
};
|
|
|
|
extern bsp_Uart_t COM_Uart1;
|
|
extern bsp_Uart_t COM_Uart2;
|
|
extern bsp_Uart_t COM_Uart4;
|
|
#endif
|