在使用户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时出现了先打开后配置的情况,这个问题有什么办法可以解决吗
更多回帖