xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_hal_uart(UART 驱动)

XTINY HAL UART 模块接口 更多...

宏定义

#define XT_HAL_UART_INVALID_ID   (0xFF)
#define XT_HAL_UART_STOP_BITS_S   (0)
#define XT_HAL_UART_STOP_BITS_W   (3)
#define XT_HAL_UART_PARITY_S   (3)
#define XT_HAL_UART_PARITY_W   (2)
#define XT_HAL_UART_WORD_LEN_S   (5)
#define XT_HAL_UART_WORD_LEN_W   (3)
#define XT_HAL_UART_WORD_LEN_5   (0)
#define XT_HAL_UART_WORD_LEN_6   (1)
#define XT_HAL_UART_WORD_LEN_7   (2)
#define XT_HAL_UART_WORD_LEN_8   (3)
#define XT_HAL_UART_WORD_LEN_9   (4)
#define XT_HAL_UART_STOP_BITS_1   (0)
#define XT_HAL_UART_STOP_BITS_2   (1)
#define XT_HAL_UART_STOP_BITS_0_5   (2)
#define XT_HAL_UART_STOP_BITS_1_5   `(3)
#define XT_HAL_UART_PARITY_N   (0)
#define XT_HAL_UART_PARITY_E   (1)
#define XT_HAL_UART_PARITY_O   (2)
#define XT_HAL_UART_PRESET(_word_length, _parity, _stop_bits)
 UART 预设配置宏
#define XT_HAL_UART_8N1   XT_HAL_UART_PRESET(_8, _N, _1)
#define XT_HAL_UART_8E1   XT_HAL_UART_PRESET(_8, _E, _1)
#define XT_HAL_UART_8O1   XT_HAL_UART_PRESET(_8, _O, _1)
#define XT_HAL_UART_8N2   XT_HAL_UART_PRESET(_8, _N, _2)
#define XT_HAL_UART_8E2   XT_HAL_UART_PRESET(_8, _E, _2)
#define XT_HAL_UART_8O2   XT_HAL_UART_PRESET(_8, _O, _2)

类型定义

typedef void(* xt_hal_uart_cb_t) (uint8_t uart_id, uint32_t event_id)
 UART 回调函数类型定义

枚举

enum  xt_hal_uart_event_id { XT_HAL_UART_EVENT_RX = 0x00 , XT_HAL_UART_EVENT_TX_DONE }
 UART 事件 ID 枚举 更多...

函数

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
xt_err_t xt_hal_uart_close (uint8_t uart_id)
 关闭 UART
xt_err_t xt_hal_uart_set_rx_buf (uint8_t uart_id, void *buffer, size_t size)
 设置接收缓冲区
xt_err_t xt_hal_uart_set_tx_buf (uint8_t uart_id, void *buffer, size_t size)
 设置发送缓冲区
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_block (uint8_t uart_id, const void *tx_buffer, size_t size)
 阻塞发送
int32_t xt_hal_uart_tx_0copy (uint8_t uart_id, const void *tx_buffer, size_t size)
 非阻塞 0 拷贝发送
int32_t xt_hal_uart_tx (uint8_t uart_id, const void *tx_buffer, size_t size)
 流式非阻塞发送
int32_t xt_hal_uart_rx (uint8_t uart_id, void *rx_buffer, size_t size)
 流式非阻塞接收
int32_t xt_hal_uart_get_rx_count (uint8_t uart_id)
 获取接收缓冲区中可读数据字节数
xt_err_t xt_hal_uart_flush_rx (uint8_t uart_id)
 清空接收缓冲区
int32_t xt_hal_uart_get_tx_free (uint8_t uart_id)
 获取发送缓冲区剩余空闲字节数
bool xt_hal_uart_is_tx_busy (uint8_t uart_id)
 查询 UART 发送是否仍在进行(含移位寄存器)

详细描述

XTINY HAL UART 模块接口

宏定义说明

◆ XT_HAL_UART_8E1

#define XT_HAL_UART_8E1   XT_HAL_UART_PRESET(_8, _E, _1)

8 位数据,偶校验,1 位停止位

在文件 xt_hal_uart.h 第 70 行定义.

◆ XT_HAL_UART_8E2

#define XT_HAL_UART_8E2   XT_HAL_UART_PRESET(_8, _E, _2)

8 位数据,偶校验,2 位停止位

在文件 xt_hal_uart.h 第 73 行定义.

◆ XT_HAL_UART_8N1

#define XT_HAL_UART_8N1   XT_HAL_UART_PRESET(_8, _N, _1)

8 位数据,无校验,1 位停止位

在文件 xt_hal_uart.h 第 69 行定义.

◆ XT_HAL_UART_8N2

#define XT_HAL_UART_8N2   XT_HAL_UART_PRESET(_8, _N, _2)

8 位数据,无校验,2 位停止位

在文件 xt_hal_uart.h 第 72 行定义.

◆ XT_HAL_UART_8O1

#define XT_HAL_UART_8O1   XT_HAL_UART_PRESET(_8, _O, _1)

8 位数据,奇校验,1 位停止位

在文件 xt_hal_uart.h 第 71 行定义.

◆ XT_HAL_UART_8O2

#define XT_HAL_UART_8O2   XT_HAL_UART_PRESET(_8, _O, _2)

8 位数据,奇校验,2 位停止位

在文件 xt_hal_uart.h 第 74 行定义.

◆ XT_HAL_UART_INVALID_ID

#define XT_HAL_UART_INVALID_ID   (0xFF)

在文件 xt_hal_uart.h 第 33 行定义.

◆ XT_HAL_UART_PARITY_E

#define XT_HAL_UART_PARITY_E   (1)

偶校验

在文件 xt_hal_uart.h 第 54 行定义.

◆ XT_HAL_UART_PARITY_N

#define XT_HAL_UART_PARITY_N   (0)

无校验

在文件 xt_hal_uart.h 第 53 行定义.

◆ XT_HAL_UART_PARITY_O

#define XT_HAL_UART_PARITY_O   (2)

奇校验

在文件 xt_hal_uart.h 第 55 行定义.

◆ XT_HAL_UART_PARITY_S

#define XT_HAL_UART_PARITY_S   (3)

在文件 xt_hal_uart.h 第 37 行定义.

◆ XT_HAL_UART_PARITY_W

#define XT_HAL_UART_PARITY_W   (2)

在文件 xt_hal_uart.h 第 38 行定义.

◆ XT_HAL_UART_PRESET

#define XT_HAL_UART_PRESET ( _word_length,
_parity,
_stop_bits )
值:
(((XT_HAL_UART_WORD_LEN##_word_length) << XT_HAL_UART_WORD_LEN_S) | \
((XT_HAL_UART_PARITY##_parity) << XT_HAL_UART_PARITY_S) | \
((XT_HAL_UART_STOP_BITS##_stop_bits) << XT_HAL_UART_STOP_BITS_S))
#define XT_HAL_UART_WORD_LEN_S
#define XT_HAL_UART_PARITY_S
#define XT_HAL_UART_STOP_BITS_S

UART 预设配置宏

参数
_word_length数据位长度后缀(如 _8 表示 8 位)
_parity校验方式后缀(如 _N 无校验,_E 偶校验,_O 奇校验)
_stop_bits停止位后缀(如 _1 表示 1 位停止位)

在文件 xt_hal_uart.h 第 64 行定义.

◆ XT_HAL_UART_STOP_BITS_0_5

#define XT_HAL_UART_STOP_BITS_0_5   (2)

0.5 位停止位

在文件 xt_hal_uart.h 第 50 行定义.

◆ XT_HAL_UART_STOP_BITS_1

#define XT_HAL_UART_STOP_BITS_1   (0)

1 位停止位

在文件 xt_hal_uart.h 第 48 行定义.

◆ XT_HAL_UART_STOP_BITS_1_5

#define XT_HAL_UART_STOP_BITS_1_5   `(3)

1.5 位停止位

在文件 xt_hal_uart.h 第 51 行定义.

◆ XT_HAL_UART_STOP_BITS_2

#define XT_HAL_UART_STOP_BITS_2   (1)

2 位停止位

在文件 xt_hal_uart.h 第 49 行定义.

◆ XT_HAL_UART_STOP_BITS_S

#define XT_HAL_UART_STOP_BITS_S   (0)

在文件 xt_hal_uart.h 第 35 行定义.

◆ XT_HAL_UART_STOP_BITS_W

#define XT_HAL_UART_STOP_BITS_W   (3)

在文件 xt_hal_uart.h 第 36 行定义.

◆ XT_HAL_UART_WORD_LEN_5

#define XT_HAL_UART_WORD_LEN_5   (0)

5 位数据

在文件 xt_hal_uart.h 第 42 行定义.

◆ XT_HAL_UART_WORD_LEN_6

#define XT_HAL_UART_WORD_LEN_6   (1)

6 位数据

在文件 xt_hal_uart.h 第 43 行定义.

◆ XT_HAL_UART_WORD_LEN_7

#define XT_HAL_UART_WORD_LEN_7   (2)

7 位数据

在文件 xt_hal_uart.h 第 44 行定义.

◆ XT_HAL_UART_WORD_LEN_8

#define XT_HAL_UART_WORD_LEN_8   (3)

8 位数据

在文件 xt_hal_uart.h 第 45 行定义.

◆ XT_HAL_UART_WORD_LEN_9

#define XT_HAL_UART_WORD_LEN_9   (4)

9 位数据

在文件 xt_hal_uart.h 第 46 行定义.

◆ XT_HAL_UART_WORD_LEN_S

#define XT_HAL_UART_WORD_LEN_S   (5)

在文件 xt_hal_uart.h 第 39 行定义.

◆ XT_HAL_UART_WORD_LEN_W

#define XT_HAL_UART_WORD_LEN_W   (3)

在文件 xt_hal_uart.h 第 40 行定义.

类型定义说明

◆ xt_hal_uart_cb_t

typedef void(* xt_hal_uart_cb_t) (uint8_t uart_id, uint32_t event_id)

UART 回调函数类型定义

参数
uart_idUART 索引
event_id事件 ID,见 xt_hal_uart_event_id

在文件 xt_hal_uart.h 第 92 行定义.

枚举类型说明

◆ xt_hal_uart_event_id

UART 事件 ID 枚举

枚举值
XT_HAL_UART_EVENT_RX 

串口接收到数据

XT_HAL_UART_EVENT_TX_DONE 

串口发送完成,仅 xt_hal_uart_tx_0copy

在文件 xt_hal_uart.h 第 81 行定义.

函数说明

◆ xt_hal_uart_close()

xt_err_t xt_hal_uart_close ( uint8_t uart_id)

关闭 UART

参数
uart_idUART 索引
返回
xt_err_t XT_EOK 成功,其他失败

◆ xt_hal_uart_flush_rx()

xt_err_t xt_hal_uart_flush_rx ( uint8_t uart_id)

清空接收缓冲区

参数
uart_idUART 索引
返回
xt_err_t XT_EOK 成功,其他失败

◆ xt_hal_uart_get_rx_count()

int32_t xt_hal_uart_get_rx_count ( uint8_t uart_id)

获取接收缓冲区中可读数据字节数

参数
uart_idUART 索引
返回
int32_t 可读字节数,负数为错误码

◆ xt_hal_uart_get_tx_free()

int32_t xt_hal_uart_get_tx_free ( uint8_t uart_id)

获取发送缓冲区剩余空闲字节数

参数
uart_idUART 索引
返回
int32_t 剩余可写字节数,负数为错误码

◆ xt_hal_uart_is_tx_busy()

bool xt_hal_uart_is_tx_busy ( uint8_t uart_id)

查询 UART 发送是否仍在进行(含移位寄存器)

用于 RS485 场景判断最后一位是否真正移出,对应硬件 FR 寄存器 TXBUSY 位。

参数
uart_idUART 索引
返回
true 发送仍在进行;false 发送完成或 UART 未初始化

◆ xt_hal_uart_rx()

int32_t xt_hal_uart_rx ( uint8_t uart_id,
void * rx_buffer,
size_t size )

流式非阻塞接收

参数
uart_idUART 索引
rx_buffer接收数据缓冲区
size缓冲区大小(字节)
返回
int32_t 实际读取的字节数,负数为错误码

◆ xt_hal_uart_set_cb()

xt_err_t xt_hal_uart_set_cb ( uint8_t uart_id,
xt_hal_uart_cb_t cb )

设置 UART 回调函数

参数
uart_idUART 索引
cb回调函数,见 xt_hal_uart_cb_t
返回
xt_err_t XT_EOK 成功,其他失败

◆ xt_hal_uart_set_rx_buf()

xt_err_t xt_hal_uart_set_rx_buf ( uint8_t uart_id,
void * buffer,
size_t size )

设置接收缓冲区

必须设置,且必须在 xt_hal_uart_setup 前设置。

参数
uart_idUART 索引
buffer缓冲区指针
size缓冲区大小(字节)
返回
xt_err_t XT_EOK 成功,其他失败

◆ xt_hal_uart_set_tx_buf()

xt_err_t xt_hal_uart_set_tx_buf ( uint8_t uart_id,
void * buffer,
size_t size )

设置发送缓冲区

如果使用 xt_hal_uart_tx_0copy 或 xt_hal_uart_tx 则必须设置。

参数
uart_idUART 索引
buffer缓冲区指针
size缓冲区大小(字节)
返回
xt_err_t XT_EOK 成功,其他失败

◆ xt_hal_uart_setup()

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

参数
uart_idUART 索引
preset预设配置(如 XT_HAL_UART_8N1)
baudrate波特率
tx_pin发送引脚编号
rx_pin接收引脚编号
返回
xt_err_t XT_EOK 成功,其他失败

◆ xt_hal_uart_tx()

int32_t xt_hal_uart_tx ( uint8_t uart_id,
const void * tx_buffer,
size_t size )

流式非阻塞发送

只要流缓冲区有空位就可以写,注意不一定能写入 size 字节。

参数
uart_idUART 索引
tx_buffer发送数据缓冲区
size发送数据长度(字节)
返回
int32_t 实际写入流缓冲区的字节数,负数为错误码

◆ xt_hal_uart_tx_0copy()

int32_t xt_hal_uart_tx_0copy ( uint8_t uart_id,
const void * tx_buffer,
size_t size )

非阻塞 0 拷贝发送

需等待传输完成才能复用 tx_buffer。

参数
uart_idUART 索引
tx_buffer发送数据缓冲区
size发送数据长度(字节)
返回
int32_t 实际发送字节数,负数为错误码

◆ xt_hal_uart_tx_block()

int32_t xt_hal_uart_tx_block ( uint8_t uart_id,
const void * tx_buffer,
size_t size )

阻塞发送

参数
uart_idUART 索引
tx_buffer发送数据缓冲区
size发送数据长度(字节)
返回
int32_t 实际发送字节数,负数为错误码