| RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_INT_TX | RT_DEVICE_OFLAG_BLOCKING) != RT_EOK) { rt_kprintf("Open device: %s failedn", UART_DEV_NAME);return; } rt_device_control(serial_dev, RT_DEVICE_CTRL_TIMEOUT, &timeout); rt_ssize_tret= rt_device_read(serial_dev, -1, &recvbu...
struct stm32_uart, serial); if(ctrl_arg & (RT_DEVICE_FLAG_RX_BLOCKING | RT_DEVICE...
`rt_forceinline rt_size_t _serial_fifo_calc_data_len(struct rt_serial_fifo *fifo)` 计算 fifo 中写入的数据量 `rt_forceinline void _serial_fifo_push_data(struct rt_serial_fifo *fifo, rt_uint8_t ch)` 压入一个数据(不完整实现,具体见下文) `rt_forceinline rt_uint8_t _serial_fifo_pop_...
我后面改为DMA+RT_DEVICE_FLAG_RX_NON_BLOCKING | RT_DEVICE_FLAG_TX_NON_BLOCKING 是DMA非阻塞收发.这样子配置就没出现过上述情况了. serialX 两手一摊,表示“无奈”
#include <rtdm/rtserial.h> #include <rtdm/rtdm_driver.h> #define RT_16550_DRIVER_NAME "xeno_16550A" #define MAX_DEVICES 8 #define IN_BUFFER_SIZE 4096 #define OUT_BUFFER_SIZE 4096 #define DEFAULT_BAUD_BASE 115200 #define DEFAULT_TX_FIFO 16 ...
fixed bug for RT_SERIAL_TX_BLOCKING model add rt_assert for serial_v2 driver/sensor Add blood pressure sensor type Add RT_SENSOR_VENDOR_MELEXIS in sensor.h Add RT_SENSOR_VENDOR_MELEXIS in sensor_cmd.c driver/spi remove _spi_bus_device_control Fix rt_qspi_send symbol extension BUG fix...
(rx_fifo);1617if((len ==0) &&// non-blocking io mode18(serial->parent.open_flag & RT_DEVICE_OFLAG_NONBLOCKING) == RT_DEVICE_OFLAG_NONBLOCKING) {19/* enable interrupt */20rt_hw_interrupt_enable(level);21return0;22}23if((len ==0) &&// blocking io mode24(serial->parent.open_...
serial->ops->enable_interrupt(serial); ret = rt_completion_wait(&(serial->completion_rx), RT_WAITING_FOREVER);// 或者 serial->completion_tx 首先开中断,调用 rt_completion_wait 等待完成量进入阻塞。这样是有个漏洞的,当开中断后有个串口中断,中断处理函数里调用 rt_completion_done 是没有任何反应...
*/rt_device_open(serial, RT_DEVICE_FLAG_RX_NON_BLOCKING | RT_DEVICE_FLAG_TX_BLOCKING);/* ...
void *serial_rx; // 串口接收缓存 void *serial_tx; // 串口发送缓存 #ifdef RT_SERIAL_USING_DMA // 串口收发缓存和 DMA 使用的二级缓存分开 rt_size_t dma_idx_rx; rt_uint8_t serial_dma_rx[RT_SERIAL_DMA_BUFSZ]; // DMA 接收缓存 ...