xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_hal_uart.h
浏览该文件的文档.
1
12
13#ifndef __XT_HAL_UART_H__
14#define __XT_HAL_UART_H__
15
16/* ==================== [Includes] ========================================== */
17
18#include "xt_hal_internal.h"
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
30
31/* ==================== [Defines] =========================================== */
32
33#define XT_HAL_UART_INVALID_ID (0xFF)
34
35#define XT_HAL_UART_STOP_BITS_S (0) // [0..2]
36#define XT_HAL_UART_STOP_BITS_W (3)
37#define XT_HAL_UART_PARITY_S (3) // [3..4]
38#define XT_HAL_UART_PARITY_W (2)
39#define XT_HAL_UART_WORD_LEN_S (5) // [5..7]
40#define XT_HAL_UART_WORD_LEN_W (3)
41
42#define XT_HAL_UART_WORD_LEN_5 (0)
43#define XT_HAL_UART_WORD_LEN_6 (1)
44#define XT_HAL_UART_WORD_LEN_7 (2)
45#define XT_HAL_UART_WORD_LEN_8 (3)
46#define XT_HAL_UART_WORD_LEN_9 (4)
47
48#define XT_HAL_UART_STOP_BITS_1 (0)
49#define XT_HAL_UART_STOP_BITS_2 (1)
50#define XT_HAL_UART_STOP_BITS_0_5 (2)
51#define XT_HAL_UART_STOP_BITS_1_5 `(3)
52
53#define XT_HAL_UART_PARITY_N (0)
54#define XT_HAL_UART_PARITY_E (1)
55#define XT_HAL_UART_PARITY_O (2)
56
64#define XT_HAL_UART_PRESET(_word_length, _parity, _stop_bits) \
65 (((XT_HAL_UART_WORD_LEN##_word_length) << XT_HAL_UART_WORD_LEN_S) | \
66 ((XT_HAL_UART_PARITY##_parity) << XT_HAL_UART_PARITY_S) | \
67 ((XT_HAL_UART_STOP_BITS##_stop_bits) << XT_HAL_UART_STOP_BITS_S))
68
69#define XT_HAL_UART_8N1 XT_HAL_UART_PRESET(_8, _N, _1)
70#define XT_HAL_UART_8E1 XT_HAL_UART_PRESET(_8, _E, _1)
71#define XT_HAL_UART_8O1 XT_HAL_UART_PRESET(_8, _O, _1)
72#define XT_HAL_UART_8N2 XT_HAL_UART_PRESET(_8, _N, _2)
73#define XT_HAL_UART_8E2 XT_HAL_UART_PRESET(_8, _E, _2)
74#define XT_HAL_UART_8O2 XT_HAL_UART_PRESET(_8, _O, _2)
75
76/* ==================== [Typedefs] ========================================== */
77
85
92typedef void (*xt_hal_uart_cb_t)(uint8_t uart_id, uint32_t event_id);
93
94/* ==================== [Global Prototypes] ================================= */
95
107 uint8_t uart_id, uint32_t preset, uint32_t baudrate,
108 uint8_t tx_pin, uint8_t rx_pin);
109
117
128xt_err_t xt_hal_uart_set_rx_buf(uint8_t uart_id, void *buffer, size_t size);
129
140xt_err_t xt_hal_uart_set_tx_buf(uint8_t uart_id, void *buffer, size_t size);
141
150
159int32_t xt_hal_uart_tx_block(uint8_t uart_id, const void *tx_buffer, size_t size);
160
171int32_t xt_hal_uart_tx_0copy(uint8_t uart_id, const void *tx_buffer, size_t size);
172
183int32_t xt_hal_uart_tx(uint8_t uart_id, const void *tx_buffer, size_t size);
184
193int32_t xt_hal_uart_rx(uint8_t uart_id, void *rx_buffer, size_t size);
194
201int32_t xt_hal_uart_get_rx_count(uint8_t uart_id);
202
210
217int32_t xt_hal_uart_get_tx_free(uint8_t uart_id);
218
227bool xt_hal_uart_is_tx_busy(uint8_t uart_id);
228
229/* ==================== [Macros] ============================================ */
230 /* xt_hal_uart */
232
233#ifdef __cplusplus
234} /* extern "C" */
235#endif
236
237#endif /* __XT_HAL_UART_H__ */
int32_t xt_err_t
错误码类型
bool xt_hal_uart_is_tx_busy(uint8_t uart_id)
查询 UART 发送是否仍在进行(含移位寄存器)
xt_err_t xt_hal_uart_set_tx_buf(uint8_t uart_id, void *buffer, size_t size)
设置发送缓冲区
int32_t xt_hal_uart_rx(uint8_t uart_id, void *rx_buffer, size_t size)
流式非阻塞接收
xt_hal_uart_event_id
UART 事件 ID 枚举
void(* xt_hal_uart_cb_t)(uint8_t uart_id, uint32_t event_id)
UART 回调函数类型定义
int32_t xt_hal_uart_tx_block(uint8_t uart_id, const void *tx_buffer, size_t size)
阻塞发送
int32_t xt_hal_uart_get_tx_free(uint8_t uart_id)
获取发送缓冲区剩余空闲字节数
xt_err_t xt_hal_uart_close(uint8_t uart_id)
关闭 UART
xt_err_t xt_hal_uart_flush_rx(uint8_t uart_id)
清空接收缓冲区
xt_err_t xt_hal_uart_set_rx_buf(uint8_t uart_id, void *buffer, size_t size)
设置接收缓冲区
xt_err_t xt_hal_uart_setup(uint8_t uart_id, uint32_t preset, uint32_t baudrate, uint8_t tx_pin, uint8_t rx_pin)
初始化 UART
int32_t xt_hal_uart_tx(uint8_t uart_id, const void *tx_buffer, size_t size)
流式非阻塞发送
int32_t xt_hal_uart_get_rx_count(uint8_t uart_id)
获取接收缓冲区中可读数据字节数
xt_err_t xt_hal_uart_set_cb(uint8_t uart_id, xt_hal_uart_cb_t cb)
设置 UART 回调函数
int32_t xt_hal_uart_tx_0copy(uint8_t uart_id, const void *tx_buffer, size_t size)
非阻塞 0 拷贝发送
@ XT_HAL_UART_EVENT_RX
@ XT_HAL_UART_EVENT_TX_DONE
XTINY HAL 内部公共头文件