每次进行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
相关产品推荐
相关产品推荐

