嵌入式技术论坛
直播中

孙成红

7年用户 1393经验值
私信 关注
[问答]

rt_device_control和rt_device_open执行先后的问题求解

在使用户rt thread开发时遇到一个疑惑的地方.
我通过rt_device_find找到设备的对象后,

#define SAMPLE_UART_NAME "uart2" /* 串口设备名称 /
static rt_device_t serial; /
串口设备句柄 /
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; /
初始化配置参数 /
/
step1:查找串口设备 /
serial = rt_device_find(SAMPLE_UART_NAME);
/
step2:修改串口配置参数 /
config.baud_rate = BAUD_RATE_9600; // 修改波特率为 9600
config.data_bits = DATA_BITS_8; // 数据位 8
config.stop_bits = STOP_BITS_1; // 停止位 1
config.rx_bufsz = 128; // 修改缓冲区 rx buff size 为 128
config.parity = PARITY_NONE; // 无奇偶校验位
/
step3:控制串口设备。通过控制接口传入命令控制字,与控制参数 /
rt_device_control(serial, RT_DEVICE_CTRL_CONFIG, &config);
/
step4:打开串口设备。以非阻塞接收和阻塞发送模式打开串口设备 */
rt_device_open(serial, RT_DEVICE_FLAG_RX_NON_BLOCKING | RT_DEVICE_FLAG_TX_BLOCKING);

如果要配置设备的参数,到底是先配置再打开,还是先打开再配置。

我发现很多驱动写的,如果先打开在配置,中断好像就不起作用了。
所以使用rt_device框架时大部分是先配置后打开的。

但是如果使用dfs的devfs去打开串口,通过posix接口打开设备 “/dev/uart5” 但是如果通过posix接口去设置串口参数,发现中断居然无效了。
在使用devfs时出现了先打开后配置的情况,这个问题有什么办法可以解决吗

回帖(1)

郝埃连

2023-2-8 11:06:31
什么时候把 rx_bufsz 从配置里踢掉,就解决你的疑惑了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分