rt-thread-official/bsp/wch/arm/ch579m/libraries/StdPeriphDriver/inc/CH57x_uart.h

132 lines
6.0 KiB
C
Raw Normal View History

#ifndef __CH57x_UART_H__
#define __CH57x_UART_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "CH579SFR.h"
#include "core_cm0.h"
/**
* @brief LINE error and status define
*/
#define STA_ERR_BREAK RB_LSR_BREAK_ERR // 数据间隔错误
#define STA_ERR_FRAME RB_LSR_FRAME_ERR // 数据帧错误
#define STA_ERR_PAR RB_LSR_PAR_ERR // 奇偶校验位出错
#define STA_ERR_FIFOOV RB_LSR_OVER_ERR // 接收数据溢出
#define STA_TXFIFO_EMP RB_LSR_TX_FIFO_EMP // 当前发送FIFO空可以继续填充发送数据
#define STA_TXALL_EMP RB_LSR_TX_ALL_EMP // 当前所有发送数据都发送完成
#define STA_RECV_DATA RB_LSR_DATA_RDY // 当前有接收到数据
/**
* @brief Configuration UART TrigByte num
*/
typedef enum
{
UART_1BYTE_TRIG = 0, // 1字节触发
UART_2BYTE_TRIG, // 2字节触发
UART_4BYTE_TRIG, // 4字节触发
UART_7BYTE_TRIG, // 7字节触发
}UARTByteTRIGTypeDef;
/****************** UART0 */
void UART0_DefInit( void ); /* 串口默认初始化配置 */
void UART0_BaudRateCfg( UINT32 baudrate ); /* 串口波特率配置 */
void UART0_ByteTrigCfg( UARTByteTRIGTypeDef b ); /* 串口字节触发中断配置 */
void UART0_INTCfg( UINT8 s, UINT8 i ); /* 串口中断配置 */
void UART0_Reset( void ); /* 串口软件复位 */
#define UART0_CLR_RXFIFO() (R8_UART0_FCR |= RB_FCR_RX_FIFO_CLR) /* 清除当前接收FIFO */
#define UART0_CLR_TXFIFO() (R8_UART0_FCR |= RB_FCR_TX_FIFO_CLR) /* 清除当前发送FIFO */
#define UART0_GetITFlag() (R8_UART0_IIR&RB_IIR_INT_MASK) /* 获取当前中断标志 */
// please refer to LINE error and status define
#define UART0_GetLinSTA() (R8_UART0_LSR) /* 获取当前通讯状态 */
#define UART0_SendByte(b) (R8_UART0_THR = b) /* 串口单字节发送 */
void UART0_SendString( PUINT8 buf, UINT16 l ); /* 串口多字节发送 */
#define UART0_RecvByte() ( R8_UART0_RBR ) /* 串口读取单字节 */
UINT16 UART0_RecvString( PUINT8 buf ); /* 串口读取多字节 */
/****************** UART1 */
void UART1_DefInit( void ); /* 串口默认初始化配置 */
void UART1_BaudRateCfg( UINT32 baudrate ); /* 串口波特率配置 */
void UART1_ByteTrigCfg( UARTByteTRIGTypeDef b ); /* 串口字节触发中断配置 */
void UART1_INTCfg( UINT8 s, UINT8 i ); /* 串口中断配置 */
void UART1_Reset( void ); /* 串口软件复位 */
#define UART1_CLR_RXFIFO() (R8_UART1_FCR |= RB_FCR_RX_FIFO_CLR) /* 清除当前接收FIFO */
#define UART1_CLR_TXFIFO() (R8_UART1_FCR |= RB_FCR_TX_FIFO_CLR) /* 清除当前发送FIFO */
#define UART1_GetITFlag() (R8_UART1_IIR&RB_IIR_INT_MASK) /* 获取当前中断标志 */
// please refer to LINE error and status define
#define UART1_GetLinSTA() (R8_UART1_LSR) /* 获取当前通讯状态 */
#define UART1_SendByte(b) (R8_UART1_THR = b) /* 串口单字节发送 */
void UART1_SendString( PUINT8 buf, UINT16 l ); /* 串口多字节发送 */
#define UART1_RecvByte() ( R8_UART1_RBR ) /* 串口读取单字节 */
UINT16 UART1_RecvString( PUINT8 buf ); /* 串口读取多字节 */
/****************** UART2 */
void UART2_DefInit( void ); /* 串口默认初始化配置 */
void UART2_BaudRateCfg( UINT32 baudrate ); /* 串口波特率配置 */
void UART2_ByteTrigCfg( UARTByteTRIGTypeDef b ); /* 串口字节触发中断配置 */
void UART2_INTCfg( UINT8 s, UINT8 i ); /* 串口中断配置 */
void UART2_Reset( void ); /* 串口软件复位 */
#define UART2_CLR_RXFIFO() (R8_UART2_FCR |= RB_FCR_RX_FIFO_CLR) /* 清除当前接收FIFO */
#define UART2_CLR_TXFIFO() (R8_UART2_FCR |= RB_FCR_TX_FIFO_CLR) /* 清除当前发送FIFO */
#define UART2_GetITFlag() (R8_UART2_IIR&RB_IIR_INT_MASK) /* 获取当前中断标志 */
// please refer to LINE error and status define
#define UART2_GetLinSTA() (R8_UART2_LSR) /* 获取当前通讯状态 */
#define UART2_SendByte(b) (R8_UART2_THR = b) /* 串口单字节发送 */
void UART2_SendString( PUINT8 buf, UINT16 l ); /* 串口多字节发送 */
#define UART2_RecvByte() ( R8_UART2_RBR ) /* 串口读取单字节 */
UINT16 UART2_RecvString( PUINT8 buf ); /* 串口读取多字节 */
/****************** UART3 */
void UART3_DefInit( void ); /* 串口默认初始化配置 */
void UART3_BaudRateCfg( UINT32 baudrate ); /* 串口波特率配置 */
void UART3_ByteTrigCfg( UARTByteTRIGTypeDef b ); /* 串口字节触发中断配置 */
void UART3_INTCfg( UINT8 s, UINT8 i ); /* 串口中断配置 */
void UART3_Reset( void ); /* 串口软件复位 */
#define UART3_CLR_RXFIFO() (R8_UART3_FCR |= RB_FCR_RX_FIFO_CLR) /* 清除当前接收FIFO */
#define UART3_CLR_TXFIFO() (R8_UART3_FCR |= RB_FCR_TX_FIFO_CLR) /* 清除当前发送FIFO */
#define UART3_GetITFlag() (R8_UART3_IIR&RB_IIR_INT_MASK) /* 获取当前中断标志 */
// please refer to LINE error and status define
#define UART3_GetLinSTA() (R8_UART3_LSR) /* 获取当前通讯状态 */
#define UART3_SendByte(b) (R8_UART3_THR = b) /* 串口单字节发送 */
void UART3_SendString( PUINT8 buf, UINT16 l ); /* 串口多字节发送 */
#define UART3_RecvByte() ( R8_UART3_RBR ) /* 串口读取单字节 */
UINT16 UART3_RecvString( PUINT8 buf ); /* 串口读取多字节 */
#ifdef __cplusplus
}
#endif
#endif // __CH57x_UART_H__