132 lines
6.0 KiB
C
132 lines
6.0 KiB
C
|
|
|||
|
|
|||
|
|
|||
|
#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__
|
|||
|
|