完成 USART
This commit is contained in:
parent
2fd672a098
commit
d7560cc5b0
1230
System/usart/uart.c
Normal file
1230
System/usart/uart.c
Normal file
File diff suppressed because it is too large
Load Diff
123
System/usart/uart.h
Normal file
123
System/usart/uart.h
Normal file
@ -0,0 +1,123 @@
|
||||
//UART 库
|
||||
|
||||
#ifndef __UART_H
|
||||
#define __UART_H
|
||||
|
||||
#define UART1_FIFO_EN 1 //调试用串口
|
||||
#define UART2_FIFO_EN 1 //WiFi 透传
|
||||
#define UART3_FIFO_EN 0
|
||||
#define UART4_FIFO_EN 0
|
||||
#define UART5_FIFO_EN 0
|
||||
#define UART6_FIFO_EN 0
|
||||
#define UART7_FIFO_EN 0
|
||||
#define UART8_FIFO_EN 0
|
||||
|
||||
//定义端口号
|
||||
typedef enum
|
||||
{
|
||||
COM1 = 0, //USART1
|
||||
COM2 = 1, //USART2
|
||||
COM3 = 2, //USART3
|
||||
COM4 = 3, //UART4
|
||||
COM5 = 4, //UART5
|
||||
COM6 = 5, //USART6
|
||||
COM7 = 6, //UART7
|
||||
COM8 = 7 //UART8
|
||||
} COM_PORT_E;
|
||||
|
||||
//定义串口波特率和FIFO缓冲区大小,分为发送缓冲区和接收缓冲区, 支持全双工
|
||||
#if UART1_FIFO_EN == 1
|
||||
#define UART1_BAUD 115200
|
||||
#define UART1_TX_BUF_SIZE 1 * 1024
|
||||
#define UART1_RX_BUF_SIZE 1 * 1024
|
||||
#endif
|
||||
|
||||
#if UART2_FIFO_EN == 1
|
||||
#define UART2_BAUD 115200
|
||||
#define UART2_TX_BUF_SIZE 1 * 1024
|
||||
#define UART2_RX_BUF_SIZE 1 * 1024
|
||||
#endif
|
||||
|
||||
#if UART3_FIFO_EN == 1
|
||||
#define UART3_BAUD 115200
|
||||
#define UART3_TX_BUF_SIZE 1 * 1024
|
||||
#define UART3_RX_BUF_SIZE 1 * 1024
|
||||
#endif
|
||||
|
||||
#if UART4_FIFO_EN == 1
|
||||
#define UART4_BAUD 115200
|
||||
#define UART4_TX_BUF_SIZE 1 * 1024
|
||||
#define UART4_RX_BUF_SIZE 1 * 1024
|
||||
#endif
|
||||
|
||||
#if UART5_FIFO_EN == 1
|
||||
#define UART5_BAUD 115200
|
||||
#define UART5_TX_BUF_SIZE 1 * 1024
|
||||
#define UART5_RX_BUF_SIZE 1 * 1024
|
||||
#endif
|
||||
|
||||
#if UART6_FIFO_EN == 1
|
||||
#define UART6_BAUD 115200
|
||||
#define UART6_TX_BUF_SIZE 1 * 1024
|
||||
#define UART6_RX_BUF_SIZE 1 * 1024
|
||||
#endif
|
||||
|
||||
#if UART7_FIFO_EN == 1
|
||||
#define UART7_BAUD 115200
|
||||
#define UART7_TX_BUF_SIZE 1 * 1024
|
||||
#define UART7_RX_BUF_SIZE 1 * 1024
|
||||
#endif
|
||||
|
||||
#if UART8_FIFO_EN == 1
|
||||
#define UART8_BAUD 115200
|
||||
#define UART8_TX_BUF_SIZE 1 * 1024
|
||||
#define UART8_RX_BUF_SIZE 1 * 1024
|
||||
#endif
|
||||
|
||||
//回调函数定义
|
||||
typedef void (*UartSendBeforeHandler)(void);
|
||||
typedef void (*UartSendOverHandler)(void);
|
||||
typedef void (*UartReceiveHandler)(uint8_t _byte);
|
||||
|
||||
//串口设备结构体
|
||||
typedef struct
|
||||
{
|
||||
USART_TypeDef *uart; //内部串口设备指针
|
||||
uint8_t *pTxBuf; //发送缓冲区
|
||||
uint8_t *pRxBuf; //接收缓冲区
|
||||
uint16_t usTxBufSize; //发送缓冲区大小
|
||||
uint16_t usRxBufSize; //接收缓冲区大小
|
||||
__IO uint16_t usTxWrite; //发送缓冲区写指针
|
||||
__IO uint16_t usTxRead; //发送缓冲区读指针
|
||||
__IO uint16_t usTxCount; //等待发送的数据个数
|
||||
|
||||
__IO uint16_t usRxWrite; //接收缓冲区写指针
|
||||
__IO uint16_t usRxRead; //接收缓冲区读指针
|
||||
__IO uint16_t usRxCount; //还未读取的新数据个数
|
||||
|
||||
UartSendBeforeHandler SendBefore; //开始发送之前的回调函数指针
|
||||
UartSendOverHandler SendOver; //发送完毕的回调函数指针
|
||||
UartReceiveHandler Receive; //串口收到数据的回调函数指针
|
||||
|
||||
uint8_t Sending; //正在发送中
|
||||
} UART_T;
|
||||
|
||||
void Uart_Init(void);
|
||||
void Uart_SendBuf(COM_PORT_E _ucPort, uint8_t *_ucaBuf, uint16_t _usLen);
|
||||
void Uart_SendChar(COM_PORT_E _ucPort, uint8_t _ucByte);
|
||||
uint8_t Uart_GetChar(COM_PORT_E _ucPort, uint8_t *_pByte);
|
||||
uint8_t Uart_GetBuffUntil(COM_PORT_E _ucPort, uint8_t *_pBuf, uint8_t _endByte, uint16_t _timeout);
|
||||
void Uart_ClearTxFifo(COM_PORT_E _ucPort);
|
||||
void Uart_ClearRxFifo(COM_PORT_E _ucPort);
|
||||
void Uart_SetBaud(COM_PORT_E _ucPort, uint32_t _BaudRate);
|
||||
void Uart_SetUartParam(USART_TypeDef *Instance, uint32_t BaudRate, uint32_t Parity, uint32_t Mode);
|
||||
uint8_t Uart_IsTxEmpty(COM_PORT_E _ucPort);
|
||||
|
||||
void Uart_BindSendBeforeHandle(COM_PORT_E _ucPort, UartSendBeforeHandler SendBefore);
|
||||
void Uart_BindSendOverHandle(COM_PORT_E _ucPort, UartSendOverHandler SendOver);
|
||||
void Uart_BindReceiveHandle(COM_PORT_E _ucPort, UartReceiveHandler Receive);
|
||||
|
||||
void Uart_SetprintfCom(COM_PORT_E _ucPort);
|
||||
void Uart_SetgetcharCom(COM_PORT_E _ucPort);
|
||||
|
||||
#endif
|
||||
Loading…
x
Reference in New Issue
Block a user