我在STM上使用DMA设置了一些UART,有时我使用HAL DMA功能(HAL_UART_Transmit_DMA
和HAL_UART_Receive_DMA
)收发UART数据,有时使用HAL定时功能({{1 }}和HAL_UART_Transmit
)。
到目前为止很好,现在我问自己,我是否可以使用延迟的功能发送数据并使用DMA功能接收响应(因为我发送的数据太短了,但是答案很大,我可以其他一些计算,直到可能得到答案为止。
我的问题基本上是,是否有任何理由不将UART非DMA tx与DMA rx混合?还是在风格上不好,还是很好?
HAL_UART_Receive
答案 0 :(得分:1)
在STM32L0xx上,只需在寄存器中启用:
1 2 3 4 5
2 1 1 1 1
:CR3
而非DMAR
DMAT
:CR1
,TE
和RE
仅为USART RX配置一个DMA通道,然后在接收时将使用DMA并仅向UE
寄存器发送写入数据。 (在TX之前,还要检查TDR
寄存器中的TXE
位(发送数据寄存器为空)。