外观
RS485 示例
2025-10-29
RS485 是一种半双工通信方式,通常使用 UART+驱动芯片实现,本文将介绍如何通过 UART 向 RS485 总线发送和接收消息,PC 利用 RS485 转 USB。
发送/接收消息
本示例展示如何通过控制发送/接收使能引脚来控制 RS485 的发送和接收。
硬件连接
开发板的 RS485 与 USB转485 连接,如图所示:

创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

在弹出新建向导中选择 开发版 、BSP: 、示例 、 调试器/下载器。选择好之后点击 “完成”。

点击 “完成” 后,等待工程创建完成。

创建完成。

构建工程点击展开
单击工程使工程进入 Active-Debug 模式。

点击工具栏上的构建按钮进行工程编译。

构建成功后,会显示构建成功的信息。

固件下载点击展开
固化设备树

固化 APP

核心示例代码
rs485_example.c
void rs485_send(rt_device_t dev, char *data, int len)
{
rt_pin_write(RS485_RTSN, 1); // 设置为发送模式
rt_device_write(dev, 0, data, len);
}
rt_err_t rs485_rx_callback(rt_device_t dev, rt_size_t size)
{
rx_len = rt_device_read(dev, 0, recv_buf, sizeof(recv_buf));
if (rx_len > 0)
{
LOG_I("RS485 recv %d bytes: %.*s", rx_len, rx_len, recv_buf);
}
return RT_EOK;
}
void rs485_thread(void *arg)
{
rt_device_t dev = rt_device_find(RS485_NAME);
rt_device_control(dev, RT_DEVICE_CTRL_CONFIG, &config_uart);
rt_device_open(dev, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX);
rt_device_set_rx_indicate(dev, rs485_rx_callback); // 设置 rs485 接收回调函数
rt_pin_mode(RS485_RTSN, PIN_MODE_OUTPUT);
for (int i = 0; i < 10; i++)
{
rs485_send(dev, send_buf, sizeof(send_buf) - 1);
rt_thread_mdelay(500);
}
rt_pin_write(RS485_RTSN, 0); // 设置为接收模式
while (1) { rt_thread_mdelay(1000); }
}运行程序
开发板运行程序后,在终端输入 rs485_example 命令,结果如下:
在整个命令执行期间,系统将执行以下操作:
rs485 发送 10 次指定数据
rs485 进入接收模式
rs485 将接收到的数据打印出来
收 <- hello RTThread!
收 <- hello RTThread!
收 <- hello RTThread!
收 <- hello RTThread!
收 <- hello RTThread!
收 <- hello RTThread!
收 <- hello RTThread!
收 <- hello RTThread!
收 <- hello RTThread!
收 <- hello RTThread!
发 -> hellomsh /> rs485_example
[I/example.rs485] RS485 recv 1 bytes: h
[I/example.rs485] RS485 recv 1 bytes: e
[I/example.rs485] RS485 recv 3 bytes: llo