CH57x_uart.h 6.0 KB

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