在stm32_uart_get_config 中如果加入了使用 DMA 的宏,会获得 DMA 的配置信息。 #ifdef BSP_UART1_RX_USING_DMAuart_obj[UART1_INDEX].uart_dma_flag|=RT_DEVICE_FLAG_DMA_RX;staticstructdma_configuart1_dma_rx=UART1_DMA_RX_CONFIG;uart_config[UART1_INDEX].dma_rx=&uart1_dma_rx;#endif#ifdef ...
serial->serial_rx = rx_fifo;/* configure fifo address and length to low level device */serial->ops->control(serial, RT_DEVICE_CTRL_CONFIG, (void *) RT_DEVICE_FLAG_DMA_RX); } dev->open_flag |= RT_DEVICE_FLAG_DMA_RX; } #endif/* RT_SERIAL_USING_DMA */... #ifdef RT_SERIAL_U...
else if(RT_DEVICE_FLAG_DMA_RX == ctrl_arg){ /* disable DMA irq */ ...uart->dma_rx....
RT_SERIAL_RB_BUFSZ这个宏决定了DMA的buffer大小和serial的ringbuffer大小. 配置DMA buffer 大小的代码如下: /* enable interrupt */if(flag == RT_DEVICE_FLAG_DMA_RX) { rx_fifo = (structrt_serial_rx_fifo *)serial->serial_rx;/* Start DMA transfer */if(HAL_UART_Receive_DMA(&(uart->handle),...
rt_err_t rt_device_open(rt_device_t dev, rt_uint16_t oflags); oflags 支持以下的参数: !!! note “注意事项” 如果上层应用程序需要设置设备的接收回调函数,则必须以 RT_DEVICE_FLAG_INT_RX或者 RT_DEVICE_FLAG_DMA_RX 的方式打开设备,否则不会回调函数。 应用程序打开设备完成读写等操作后,如...
1) 配置shell使用串口1:RT-Thread Kernel ---> Kernel Device Object ---> 修改the device name for console为uart1。 2) 勾选Using UART1、Using UART2,选择芯片型号为STM32F407ZE,时钟源为外部8MHz,如图所示: 图A.3 使用menuconfig配置串口
struct rt_device parent; const struct rt_uart_ops *ops; struct serial_configure config; void *serial_rx; // 串口接收缓存 void *serial_tx; // 串口发送缓存 #ifdef RT_SERIAL_USING_DMA // 串口收发缓存和 DMA 使用的二级缓存分开 rt_size_t dma_idx_rx; ...
rt_device_open(uart_dev,RT_DEVICE_FLAG_DMA_RX); rt_device_set_rx_indicate(uart_dev,uart_recv_isr); } } cdc虚拟串口数据到串口3的实现如下: voidusb2uart_handler(rt_uint8_t*data,rt_uint16_tlen) { if(uart_dev) { rt_device_write(uart_dev,0,data,len); ...
rt_device_open(serial, RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM); //上面的参数对应以下含义: //#define RT_DEVICE_FLAG_INT_RX 0x100 /**< INT mode on Rx */ //#define RT_DEVICE_FLAG_DMA_RX 0x200 /**< DMA mode on Rx */ ...
serial=rt_device_fi nd(SA MP LE_UART_NAME); /* rt_device_o pen( serial, RT_DEVICE_FLAG_DMA_RX); 控制串口设备 通过控制接口,应用程序可以对串口设备进行配置,如波特率、数据位、 校验位、接收缓冲区大小、停止位等参数的修改。控制函数如下所示: ...