1 2 3 4 #ifndef __CH57x_UART_H__ 5 #define __CH57x_UART_H__ 6 7 #ifdef __cplusplus 8 extern "C" { 9 #endif 10 11 #include "CH579SFR.h" 12 #include "core_cm0.h" 13 14 15 /** 16 * @brief LINE error and status define 17 */ 18 #define STA_ERR_BREAK RB_LSR_BREAK_ERR // 数据间隔错误 19 #define STA_ERR_FRAME RB_LSR_FRAME_ERR // 数据帧错误 20 #define STA_ERR_PAR RB_LSR_PAR_ERR // 奇偶校验位出错 21 #define STA_ERR_FIFOOV RB_LSR_OVER_ERR // 接收数据溢出 22 23 #define STA_TXFIFO_EMP RB_LSR_TX_FIFO_EMP // 当前发送FIFO空,可以继续填充发送数据 24 #define STA_TXALL_EMP RB_LSR_TX_ALL_EMP // 当前所有发送数据都发送完成 25 #define STA_RECV_DATA RB_LSR_DATA_RDY // 当前有接收到数据 26 27 28 /** 29 * @brief Configuration UART TrigByte num 30 */ 31 typedef enum 32 { 33 UART_1BYTE_TRIG = 0, // 1字节触发 34 UART_2BYTE_TRIG, // 2字节触发 35 UART_4BYTE_TRIG, // 4字节触发 36 UART_7BYTE_TRIG, // 7字节触发 37 38 }UARTByteTRIGTypeDef; 39 40 41 /****************** UART0 */ 42 void UART0_DefInit( void ); /* 串口默认初始化配置 */ 43 void UART0_BaudRateCfg( UINT32 baudrate ); /* 串口波特率配置 */ 44 void UART0_ByteTrigCfg( UARTByteTRIGTypeDef b ); /* 串口字节触发中断配置 */ 45 void UART0_INTCfg( UINT8 s, UINT8 i ); /* 串口中断配置 */ 46 void UART0_Reset( void ); /* 串口软件复位 */ 47 48 #define UART0_CLR_RXFIFO() (R8_UART0_FCR |= RB_FCR_RX_FIFO_CLR) /* 清除当前接收FIFO */ 49 #define UART0_CLR_TXFIFO() (R8_UART0_FCR |= RB_FCR_TX_FIFO_CLR) /* 清除当前发送FIFO */ 50 51 #define UART0_GetITFlag() (R8_UART0_IIR&RB_IIR_INT_MASK) /* 获取当前中断标志 */ 52 // please refer to LINE error and status define 53 #define UART0_GetLinSTA() (R8_UART0_LSR) /* 获取当前通讯状态 */ 54 55 #define UART0_SendByte(b) (R8_UART0_THR = b) /* 串口单字节发送 */ 56 void UART0_SendString( PUINT8 buf, UINT16 l ); /* 串口多字节发送 */ 57 #define UART0_RecvByte() ( R8_UART0_RBR ) /* 串口读取单字节 */ 58 UINT16 UART0_RecvString( PUINT8 buf ); /* 串口读取多字节 */ 59 60 61 62 /****************** UART1 */ 63 void UART1_DefInit( void ); /* 串口默认初始化配置 */ 64 void UART1_BaudRateCfg( UINT32 baudrate ); /* 串口波特率配置 */ 65 void UART1_ByteTrigCfg( UARTByteTRIGTypeDef b ); /* 串口字节触发中断配置 */ 66 void UART1_INTCfg( UINT8 s, UINT8 i ); /* 串口中断配置 */ 67 void UART1_Reset( void ); /* 串口软件复位 */ 68 69 #define UART1_CLR_RXFIFO() (R8_UART1_FCR |= RB_FCR_RX_FIFO_CLR) /* 清除当前接收FIFO */ 70 #define UART1_CLR_TXFIFO() (R8_UART1_FCR |= RB_FCR_TX_FIFO_CLR) /* 清除当前发送FIFO */ 71 72 #define UART1_GetITFlag() (R8_UART1_IIR&RB_IIR_INT_MASK) /* 获取当前中断标志 */ 73 // please refer to LINE error and status define 74 #define UART1_GetLinSTA() (R8_UART1_LSR) /* 获取当前通讯状态 */ 75 76 #define UART1_SendByte(b) (R8_UART1_THR = b) /* 串口单字节发送 */ 77 void UART1_SendString( PUINT8 buf, UINT16 l ); /* 串口多字节发送 */ 78 #define UART1_RecvByte() ( R8_UART1_RBR ) /* 串口读取单字节 */ 79 UINT16 UART1_RecvString( PUINT8 buf ); /* 串口读取多字节 */ 80 81 82 83 /****************** UART2 */ 84 void UART2_DefInit( void ); /* 串口默认初始化配置 */ 85 void UART2_BaudRateCfg( UINT32 baudrate ); /* 串口波特率配置 */ 86 void UART2_ByteTrigCfg( UARTByteTRIGTypeDef b ); /* 串口字节触发中断配置 */ 87 void UART2_INTCfg( UINT8 s, UINT8 i ); /* 串口中断配置 */ 88 void UART2_Reset( void ); /* 串口软件复位 */ 89 90 #define UART2_CLR_RXFIFO() (R8_UART2_FCR |= RB_FCR_RX_FIFO_CLR) /* 清除当前接收FIFO */ 91 #define UART2_CLR_TXFIFO() (R8_UART2_FCR |= RB_FCR_TX_FIFO_CLR) /* 清除当前发送FIFO */ 92 93 #define UART2_GetITFlag() (R8_UART2_IIR&RB_IIR_INT_MASK) /* 获取当前中断标志 */ 94 // please refer to LINE error and status define 95 #define UART2_GetLinSTA() (R8_UART2_LSR) /* 获取当前通讯状态 */ 96 97 #define UART2_SendByte(b) (R8_UART2_THR = b) /* 串口单字节发送 */ 98 void UART2_SendString( PUINT8 buf, UINT16 l ); /* 串口多字节发送 */ 99 #define UART2_RecvByte() ( R8_UART2_RBR ) /* 串口读取单字节 */ 100 UINT16 UART2_RecvString( PUINT8 buf ); /* 串口读取多字节 */ 101 102 103 104 105 /****************** UART3 */ 106 void UART3_DefInit( void ); /* 串口默认初始化配置 */ 107 void UART3_BaudRateCfg( UINT32 baudrate ); /* 串口波特率配置 */ 108 void UART3_ByteTrigCfg( UARTByteTRIGTypeDef b ); /* 串口字节触发中断配置 */ 109 void UART3_INTCfg( UINT8 s, UINT8 i ); /* 串口中断配置 */ 110 void UART3_Reset( void ); /* 串口软件复位 */ 111 112 #define UART3_CLR_RXFIFO() (R8_UART3_FCR |= RB_FCR_RX_FIFO_CLR) /* 清除当前接收FIFO */ 113 #define UART3_CLR_TXFIFO() (R8_UART3_FCR |= RB_FCR_TX_FIFO_CLR) /* 清除当前发送FIFO */ 114 115 #define UART3_GetITFlag() (R8_UART3_IIR&RB_IIR_INT_MASK) /* 获取当前中断标志 */ 116 // please refer to LINE error and status define 117 #define UART3_GetLinSTA() (R8_UART3_LSR) /* 获取当前通讯状态 */ 118 119 #define UART3_SendByte(b) (R8_UART3_THR = b) /* 串口单字节发送 */ 120 void UART3_SendString( PUINT8 buf, UINT16 l ); /* 串口多字节发送 */ 121 #define UART3_RecvByte() ( R8_UART3_RBR ) /* 串口读取单字节 */ 122 UINT16 UART3_RecvString( PUINT8 buf ); /* 串口读取多字节 */ 123 124 125 126 #ifdef __cplusplus 127 } 128 #endif 129 130 #endif // __CH57x_UART_H__ 131 132