📄 xsuartdrv.h
字号:
#ifndef __XSUART_DRV_H
#define __XSUART_DRV_H
#include "XsUartRegs.h"
/* Baud rate definition */
#define BAUD_RATE_4800 4800
#define BAUD_RATE_9600 9600
#define BAUD_RATE_19200 19200
#define BAUD_RATE_38400 38400
#define BAUD_RATE_57600 57600
#define BAUD_RATE_115200 115200
#define BAUD_RATE_230400 230400
#define BAUD_RATE_460800 460800
#define BAUD_RATE_960800 960800
#define BAUD_RATE_DEFAULT BAUD_RATE_115200
typedef enum UartParityE
{
UART_NOPARITY,
UART_PARITY
}UartParityT;
typedef enum UartStopBitE
{
UART_ONESTOPBIT,
UART_TWOSTOPBITS
}UartStopBitT;
typedef enum UartBitsE
{
UART_5BITS,
UART_6BITS,
UART_7BITS,
UART_8BITS
}UartBitsT;
typedef enum UartFlowControlE
{
UART_XON_OFF,
UART_HARDWARE,
UART_FLOWCTRL_NONE
}UartFlowControlT;
typedef enum UartDeviceE
{
UART_FF = 0,
UART_BT = 1,
UART_STD = 2,
UART_IRDA = 3
}UartDeviceT;
void XsUartDrv_Init(volatile UartRegsT *pUart, UartDeviceT Device, unsigned int Baudrate, UartBitsT Bits, UartParityT Parity, UartStopBitT Stop, UartFlowControlT FlowCtrl);
#define XsUartDrv_InitDefault(pUart, Device) \
XsUartDrv_Init((volatile UartRegsT *)pUart, Device, BAUD_RATE_DEFAULT, UART_8BITS, UART_NOPARITY, UART_ONESTOPBIT, UART_FLOWCTRL_NONE)
//set default UART device for xxxDef function
void XsUartDrv_SetDefaultUartDevice(UartDeviceT Device);
//send a char via UART
void XsUartDrv_SendChar(volatile UartRegsT *pUart, char *pch);
void XsUartDrv_SendCharDef(char *pch); //using default Uart Device
#define XsUartDrv_SendCharFF(pch) XsUartDrv_SendChar((volatile UartRegsT *)FFUARTREG_PHY_BASE_ADDR, (char *)pch)
#define XsUartDrv_SendCharBT(pch) XsUartDrv_SendChar((volatile UartRegsT *)BTUARTREG_PHY_BASE_ADDR, (char *)pch)
#define XsUartDrv_SendCharST(pch) XsUartDrv_SendChar((volatile UartRegsT *)STUARTREG_PHY_BASE_ADDR, (char *)pch)
void XsUartDrv_SendChar_Phy(char *pch);
//send data string via UART
void XsUartDrv_SendData(volatile UartRegsT *pUart, char *pBuf, int len);
void XsUartDrv_SendDataDef(char *pBuf, int len); //using default Uart Device
#define XsUartDrv_SendDataFF(pBuf, len) \
XsUartDrv_SendData((volatile UartRegsT *)FFUARTREG_PHY_BASE_ADDR, (char *)pBuf, (int)len)
#define XsUartDrv_SendDataBT(pBuf, len) \
XsUartDrv_SendData((volatile UartRegsT *)BTUARTREG_PHY_BASE_ADDR, (char *)pBuf, (int)len)
#define XsUartDrv_SendDataST(pBuf, len) \
XsUartDrv_SendData((volatile UartRegsT *)STUARTREG_PHY_BASE_ADDR, (char *)pBuf, (int)len)
//send a '\0' terminated string via UART
void XsUartDrv_SendStrZ(volatile UartRegsT *pUart, char *pBuf);
void XsUartDrv_SendStrZDef(char *pBuf); //using default Uart Device
#define XsUartDrv_SendStrZFF(pBuf) \
XsUartDrv_SendStrZ((volatile UartRegsT *)FFUARTREG_PHY_BASE_ADDR, (char *)pBuf);
#define XsUartDrv_SendStrZBT(pBuf) \
XsUartDrv_SendStrZ((volatile UartRegsT *)BTUARTREG_PHY_BASE_ADDR, (char *)pBuf);
#define XsUartDrv_SendStrZST(pBuf) \
XsUartDrv_SendStrZ((volatile UartRegsT *)STUARTREG_PHY_BASE_ADDR, (char *)pBuf);
//receive data in polling mode, if no user input, the macro function will never return
int XsUartDrv_ReadUart(volatile UartRegsT *pUart, char * rxbufP, unsigned int len, unsigned int timeout);
int XsUartDrv_ReadUartDef(char * rxbufP, unsigned int len, unsigned int timeout); //using default Uart Device
#define XsUartDrv_ReadUartFF(rxbufP, len, TimeoutInUs)\
XsUartDrv_ReadUart((volatile UartRegsT *)FFUARTREG_PHY_BASE_ADDR, (char *)rxbufP, (unsigned int)len, TimeoutInUs)
#define XsUartDrv_ReadUartBT(rxbufP, len, TimeoutInUs)\
XsUartDrv_ReadUart((volatile UartRegsT *)BTUARTREG_PHY_BASE_ADDR, (char *)rxbufP, (unsigned int)len, TimeoutInUs)
#define XsUartDrv_ReadUartST(rxbufP, len, TimeoutInUs)\
XsUartDrv_ReadUart((volatile UartRegsT *)STUARTREG_PHY_BASE_ADDR, (char *)rxbufP, (unsigned int)len, TimeoutInUs)
int XsUartDrv_ClearRxUart(volatile UartRegsT *pUart);
int XsUartDrv_ClearRxUartDef(void); //using default Uart Device
#define XsUartDrv_ClearRxUartFF()\
XsUartDrv_ClearRxUart((volatile UartRegsT *)FFUARTREG_PHY_BASE_ADDR)
#define XsUartDrv_ClearRxUartBT()\
XsUartDrv_ClearRxUart((volatile UartRegsT *)BTUARTREG_PHY_BASE_ADDR)
//printf functions, DO NOT use these functions with more than 256 chars
void PrintfUart(volatile UartRegsT *pUart, char * fmt, ...);
void PrintfUartDef(char * fmt, ...); //using default Uart Device
void PrintfUartFF(char * fmt, ...);
void PrintfUartBT(char * fmt, ...);
void PrintfUartST(char * fmt, ...);
//dump address
void XsUartDrv_DumpAddr(unsigned base_address, int nWord);
//get string from default uart device
char * GetsConsole(char *buf); // in retargtx.c
#endif //__XSUART_DRV_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -