stm32 usart dma接收不启动数据寄存器

时间:2017-04-12 18:05:26

标签: stm32 stm32f4

在STM32系列上启用UART DMA接收有哪些要求?根据我的观察,如果任何陈旧数据在uart接收数据寄存器中,它将阻止dma在启用时启动(我相信因为没有新数据将触发dma中断以清除该字节并继续正常)。

如果在设置dmar位后接收到中断上下文和数据(即uart dma receive enabled),dma会在退出中断后清除该位还是会锁定dma?如果是这样,如何在启用dma和退出中断上下文之间防止这种竞争条件(注意所有中断都是相同的优先级,因此在当前中断时有效地禁止中断)。

1 个答案:

答案 0 :(得分:2)

试试这个

  • 设置DMA后,清除RXNE中的UARTx->SR位。

  • 保存CR1,将CR1设置为0(或清除RE位),阅读SRDR,设置DMA并恢复{ {1}}。