stm32_dma_config(serial, ctrl_arg); #endif stm32_dma_config() 的内容主要是完成 DMA 的配置 static void stm32_dma_config(struct rt_serial_device *serial, rt_ubase_t flag) { struct rt_serial_rx_fifo *rx_fifo; DMA_HandleTypeDef *DMA_Handle; struct dma_config *dma_config; struct stm32...
UART设备的操作方法实现后需要注册设备到操作系统,注册UART设备的接口是rt_err_t rt_hw_serial_register(struct rt_serial_device serial,const char name,rt_uint32_t flag, void *data)。 UART设备中断处理 增加DMA模式 增加UART设备DMA模式,需要首先对每个UART的DMA进行配置,接着进行DMA初始化和中断处理,最后完...
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...
/* stm32 uart dirver class */structstm32_uart{UART_HandleTypeDefhandle;//管理串口的句柄,类型里面是一些简单的数据类型structstm32_uart_config*config;#ifdef RT_SERIAL_USING_DMAstruct{DMA_HandleTypeDefhandle;//管理DMA的句柄,类型里面是一些简单的数据类型以及回调函数rt_size_tremaining_cnt;}dma_rx;struc...
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 接收缓存 ...
uart->dma_rx.last_index = 0; #endif hal_uart_init(&uart->handle); return RT_EOK; } static rt_err_t ab32_control(struct rt_serial_device *serial, int cmd, void *arg) { struct ab32_uart *uart; #ifdef RT_SERIAL_USING_DMA ...
serial 的 control 操作 设计成 不能设置中断,即缺少 RT_DEVICE_CTRL_SET_INT 和 RT_DEVICE_CTRL_CLR_INT 操作, 这样可以避免误设置; 同时也是由于串口接收已经设计成三选一方式:中断、DMA、轮询; 说一下DMA,因为这也是我们最常用的串口数据接收处理方式; ...
4 select RT_USING_SERIAL 5 if BSP_USING_UART 6 config BSP_USING_UART1 7 bool "Enable UART1" 8 default y 9 10 config BSP_UART1_RX_USING_DMA 11 bool "Enable UART1 RX DMA" 12 depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA ...
配置成中断接收,DMA发送 相信大家已经能够正常使用finsh组件了,所以小弟就不献丑了,呵呵! shaolin前辈写的finsh的使用 连接1 rt-thread下的串口驱动程序分析 连接2 主要写一下UART3 使用DMA发送 #ifdef RT_USING_UART3 struct stm32_serial_int_rx uart3_int_rx; ...
drivers/serial.c中增加RT_SERIAL_USING_DMA选项; drivers/spi框架中增加QSPI的支持; SFUD中增加QSPI的支持(以stm32的QSPI外设为蓝本);SFUD升级到1.1.0版本; 优化spi_msd中的spi take/release调用代码; 修正rt_rbb_blk_alloc中对blk_size的判断; 修正usb stack中,_get_descriptor函数对FS USB的判断; 修正driver...