You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

每次进行UART配置前,是否必须先关闭再重新打开UART?

每次配置UART前必须先关闭再重新打开吗?

不需要。在Linux环境下,无需关闭并重新打开UART设备就能直接修改其配置参数。只要持有合法的设备文件描述符,直接调用配置接口更新波特率、数据位等参数即可生效,方案二是更高效、简洁的实现方式。

只有在极少数特殊场景下(比如某些老旧硬件驱动存在配置不生效的bug),才需要考虑关闭重开的操作,但这属于非常规情况。

初始UART配置示例

typedef struct devpara {
  int fd;
  int num;
} devpara_t;

devpara_t *dpara = malloc(sizeof(devpara_t));

dpara->hd = openuart("/ttyS0");  // 打开参数为 (O_RDWR | O_NOCTTY);
if (dpara->hd < 0)
    return -1;
configuart(dpara->hd, 115200, 8, 1, NOPAR, 1 /* stopbits */);

// 执行相关业务操作,之后需要将波特率改为9600

两种参数修改方案

方案一:关闭重开后配置(冗余操作)

closeuart(dpara->hd);
dpara->hd = openuart("/ttyS0");
if (dpara->hd < 0)
    return -1;
configuart(dpara->hd, 9600, 8, 1, NOPAR, 1 /* stopbits */);

方案二:直接重新配置(推荐)

configuart(dpara->hd, 9600, 8, 1, NOPAR, 1 /* stopbits */);

内容的提问来源于stack exchange,提问作者Rui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:02:59