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

132 lines
6.0 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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__