This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于UART DMA的疑问



UART接收与发送不能同时用DMA?

我看startware中的例程

启动发送前:UARTDMAEnable(, UART_RX_TRIG_LEVEL_1 | UART_DMAMODE | UART_FIFO_MODE);

DMA发送后:UARTDMADisable(, UART_RX_TRIG_LEVEL_1 | UART_FIFO_MODE);

启动接收:UARTDMAEnable(, UART_RX_TRIG_LEVEL_1 | UART_DMAMODE | UART_FIFO_MODE);

DMA接收完成后:UARTDMADisable(, UART_RX_TRIG_LEVEL_1 | UART_FIFO_MODE);

实现:

是用DMA接收串口数据到buffer(fifo),接收需要一直工作;

发送则是突发操作,当调用发送函数时才启动发送DMA;

如此问题就来了,如果启动发送,发送完成后把DMA禁止了,同时也禁止了接收的DMA;

不知道理解有没有错?

如果理解错误,那又如何保证相互不影响?