diff options
| author | Fran莽ois Cartegnie <281376+fcartegnie@users.noreply.github.com> | 2024-06-06 11:22:09 +0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-06 11:22:09 +0700 |
| commit | f6d84a1ead1a57574c45bb80b6fd450c5b784e09 (patch) | |
| tree | ccfe2db3861197bc29eff52e53a814d909501863 /CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_uart.h | |
| parent | d641c0de85f6ccf73c8c99012f1a5c4e28af54dc (diff) | |
| parent | 90cdb61063b408aa4d8ba0c1e3c36d804f69f61a (diff) | |
Merge pull request #10 from kienvo/led-scan
Add basic Charlieplexing scan
Diffstat (limited to 'CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_uart.h')
| -rw-r--r-- | CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_uart.h | 412 |
1 files changed, 412 insertions, 0 deletions
diff --git a/CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_uart.h b/CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_uart.h new file mode 100644 index 0000000..75f8244 --- /dev/null +++ b/CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_uart.h @@ -0,0 +1,412 @@ +/********************************** (C) COPYRIGHT *******************************
+ * File Name : CH57x_uart.h
+ * Author : WCH
+ * Version : V1.2
+ * Date : 2021/11/17
+ * Description
+ *********************************************************************************
+ * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
+ * Attention: This software (modified or not) and binary are used for
+ * microcontroller manufactured by Nanjing Qinheng Microelectronics.
+ *******************************************************************************/
+
+#ifndef __CH58x_UART_H__
+#define __CH58x_UART_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @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;
+
+/**
+ * @brief 串口默认初始化配置
+ */
+void UART0_DefInit(void);
+
+/**
+ * @brief 串口波特率配置
+ *
+ * @param baudrate - 波特率
+ */
+void UART0_BaudRateCfg(uint32_t baudrate);
+
+/**
+ * @brief 串口字节触发中断配置
+ *
+ * @param b - 触发字节数 refer to UARTByteTRIGTypeDef
+ */
+void UART0_ByteTrigCfg(UARTByteTRIGTypeDef b);
+
+/**
+ * @brief 串口中断配置
+ *
+ * @param s - 中断控制状态,是否使能相应中断
+ * @param i - 中断类型
+ * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持)
+ * RB_IER_LINE_STAT - 接收线路状态中断
+ * RB_IER_THR_EMPTY - 发送保持寄存器空中断
+ * RB_IER_RECV_RDY - 接收数据中断
+ */
+void UART0_INTCfg(FunctionalState s, uint8_t i);
+
+/**
+ * @brief 串口软件复位
+ */
+void UART0_Reset(void);
+
+/**
+ * @brief 清除当前接收FIFO
+ */
+#define UART0_CLR_RXFIFO() (R8_UART0_FCR |= RB_FCR_RX_FIFO_CLR)
+
+/**
+ * @brief 清除当前发送FIFO
+ */
+#define UART0_CLR_TXFIFO() (R8_UART0_FCR |= RB_FCR_TX_FIFO_CLR)
+
+/**
+ * @brief 获取当前中断标志
+ *
+ * @return 当前中断标志
+ */
+#define UART0_GetITFlag() (R8_UART0_IIR & RB_IIR_INT_MASK)
+
+/**
+ * @brief 获取当前通讯状态
+ *
+ * @return refer to LINE error and status define
+ */
+#define UART0_GetLinSTA() (R8_UART0_LSR)
+
+/**
+ * @brief 串口单字节发送
+ *
+ * @param b 待发送的字节
+ */
+#define UART0_SendByte(b) (R8_UART0_THR = b)
+
+/**
+ * @brief 串口多字节发送
+ *
+ * @param buf - 待发送的数据内容首地址
+ * @param l - 待发送的数据长度
+ */
+void UART0_SendString(uint8_t *buf, uint16_t l);
+
+/**
+ * @brief 串口读取单字节
+ *
+ * @return 读取到的单字节
+ */
+#define UART0_RecvByte() (R8_UART0_RBR)
+
+/**
+ * @brief 串口读取多字节
+ *
+ * @param buf - 读取数据存放缓存区首地址
+ *
+ * @return 读取数据长度
+ */
+uint16_t UART0_RecvString(uint8_t *buf);
+
+/**
+ * @brief 串口默认初始化配置
+ */
+void UART1_DefInit(void);
+
+/**
+ * @brief 串口波特率配置
+ *
+ * @param baudrate - 波特率
+ */
+void UART1_BaudRateCfg(uint32_t baudrate);
+
+/**
+ * @brief 串口字节触发中断配置
+ *
+ * @param b - 触发字节数 refer to UARTByteTRIGTypeDef
+ */
+void UART1_ByteTrigCfg(UARTByteTRIGTypeDef b);
+
+/**
+ * @brief 串口中断配置
+ *
+ * @param s - 中断控制状态,是否使能相应中断
+ * @param i - 中断类型
+ * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持)
+ * RB_IER_LINE_STAT - 接收线路状态中断
+ * RB_IER_THR_EMPTY - 发送保持寄存器空中断
+ * RB_IER_RECV_RDY - 接收数据中断
+ */
+void UART1_INTCfg(FunctionalState s, uint8_t i);
+
+/**
+ * @brief 串口软件复位
+ */
+void UART1_Reset(void);
+
+/**
+ * @brief 清除当前接收FIFO
+ */
+#define UART1_CLR_RXFIFO() (R8_UART1_FCR |= RB_FCR_RX_FIFO_CLR)
+
+/**
+ * @brief 清除当前发送FIFO
+ */
+#define UART1_CLR_TXFIFO() (R8_UART1_FCR |= RB_FCR_TX_FIFO_CLR)
+
+/**
+ * @brief 获取当前中断标志
+ *
+ * @return 当前中断标志
+ */
+#define UART1_GetITFlag() (R8_UART1_IIR & RB_IIR_INT_MASK)
+
+/**
+ * @brief 获取当前通讯状态
+ *
+ * @return refer to LINE error and status define
+ */
+#define UART1_GetLinSTA() (R8_UART1_LSR)
+
+/**
+ * @brief 串口单字节发送
+ *
+ * @param b 待发送的字节
+ */
+#define UART1_SendByte(b) (R8_UART1_THR = b)
+
+/**
+ * @brief 串口多字节发送
+ *
+ * @param buf - 待发送的数据内容首地址
+ * @param l - 待发送的数据长度
+ */
+void UART1_SendString(uint8_t *buf, uint16_t l);
+
+/**
+ * @brief 串口读取单字节
+ *
+ * @return 读取到的单字节
+ */
+#define UART1_RecvByte() (R8_UART1_RBR)
+
+/**
+ * @brief 串口读取多字节
+ *
+ * @param buf - 读取数据存放缓存区首地址
+ *
+ * @return 读取数据长度
+ */
+uint16_t UART1_RecvString(uint8_t *buf);
+
+/**
+ * @brief 串口默认初始化配置
+ */
+void UART2_DefInit(void);
+
+/**
+ * @brief 串口波特率配置
+ *
+ * @param baudrate - 波特率
+ */
+void UART2_BaudRateCfg(uint32_t baudrate);
+
+/**
+ * @brief 串口字节触发中断配置
+ *
+ * @param b - 触发字节数 refer to UARTByteTRIGTypeDef
+ */
+void UART2_ByteTrigCfg(UARTByteTRIGTypeDef b);
+
+/**
+ * @brief 串口中断配置
+ *
+ * @param s - 中断控制状态,是否使能相应中断
+ * @param i - 中断类型
+ * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持)
+ * RB_IER_LINE_STAT - 接收线路状态中断
+ * RB_IER_THR_EMPTY - 发送保持寄存器空中断
+ * RB_IER_RECV_RDY - 接收数据中断
+ */
+void UART2_INTCfg(FunctionalState s, uint8_t i);
+
+/**
+ * @brief 串口软件复位
+ */
+void UART2_Reset(void);
+
+/**
+ * @brief 清除当前接收FIFO
+ */
+#define UART2_CLR_RXFIFO() (R8_UART2_FCR |= RB_FCR_RX_FIFO_CLR)
+
+/**
+ * @brief 清除当前发送FIFO
+ */
+#define UART2_CLR_TXFIFO() (R8_UART2_FCR |= RB_FCR_TX_FIFO_CLR)
+
+/**
+ * @brief 获取当前中断标志
+ *
+ * @return 当前中断标志
+ */
+#define UART2_GetITFlag() (R8_UART2_IIR & RB_IIR_INT_MASK)
+
+/**
+ * @brief 获取当前通讯状态
+ *
+ * @return refer to LINE error and status define
+ */
+#define UART2_GetLinSTA() (R8_UART2_LSR)
+
+/**
+ * @brief 串口单字节发送
+ *
+ * @param b 待发送的字节
+ */
+#define UART2_SendByte(b) (R8_UART2_THR = b)
+
+/**
+ * @brief 串口多字节发送
+ *
+ * @param buf - 待发送的数据内容首地址
+ * @param l - 待发送的数据长度
+ */
+void UART2_SendString(uint8_t *buf, uint16_t l);
+
+/**
+ * @brief 串口读取单字节
+ *
+ * @return 读取到的单字节
+ */
+#define UART2_RecvByte() (R8_UART2_RBR)
+
+/**
+ * @brief 串口读取多字节
+ *
+ * @param buf - 读取数据存放缓存区首地址
+ *
+ * @return 读取数据长度
+ */
+uint16_t UART2_RecvString(uint8_t *buf);
+
+/**
+ * @brief 串口默认初始化配置
+ */
+void UART3_DefInit(void);
+
+/**
+ * @brief 串口波特率配置
+ *
+ * @param baudrate - 波特率
+ */
+void UART3_BaudRateCfg(uint32_t baudrate);
+
+/**
+ * @brief 串口字节触发中断配置
+ *
+ * @param b - 触发字节数 refer to UARTByteTRIGTypeDef
+ */
+void UART3_ByteTrigCfg(UARTByteTRIGTypeDef b);
+
+/**
+ * @brief 串口中断配置
+ *
+ * @param s - 中断控制状态,是否使能相应中断
+ * @param i - 中断类型
+ * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持)
+ * RB_IER_LINE_STAT - 接收线路状态中断
+ * RB_IER_THR_EMPTY - 发送保持寄存器空中断
+ * RB_IER_RECV_RDY - 接收数据中断
+ */
+void UART3_INTCfg(FunctionalState s, uint8_t i);
+
+/**
+ * @brief 串口软件复位
+ */
+void UART3_Reset(void);
+
+/**
+ * @brief 清除当前接收FIFO
+ */
+#define UART3_CLR_RXFIFO() (R8_UART3_FCR |= RB_FCR_RX_FIFO_CLR)
+
+/**
+ * @brief 清除当前发送FIFO
+ */
+#define UART3_CLR_TXFIFO() (R8_UART3_FCR |= RB_FCR_TX_FIFO_CLR)
+
+/**
+ * @brief 获取当前中断标志
+ *
+ * @return 当前中断标志
+ */
+#define UART3_GetITFlag() (R8_UART3_IIR & RB_IIR_INT_MASK)
+
+/**
+ * @brief 获取当前通讯状态
+ *
+ * @return refer to LINE error and status define
+ */
+#define UART3_GetLinSTA() (R8_UART3_LSR)
+
+/**
+ * @brief 串口单字节发送
+ *
+ * @param b 待发送的字节
+ */
+#define UART3_SendByte(b) (R8_UART3_THR = b)
+
+/**
+ * @brief 串口多字节发送
+ *
+ * @param buf - 待发送的数据内容首地址
+ * @param l - 待发送的数据长度
+ */
+void UART3_SendString(uint8_t *buf, uint16_t l);
+
+/**
+ * @brief 串口读取单字节
+ *
+ * @return 读取到的单字节
+ */
+#define UART3_RecvByte() (R8_UART3_RBR)
+
+/**
+ * @brief 串口读取多字节
+ *
+ * @param buf - 读取数据存放缓存区首地址
+ *
+ * @return 读取数据长度
+ */
+uint16_t UART3_RecvString(uint8_t *buf);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __CH58x_UART_H__
|