在STM32系列上启用UART DMA接收有哪些要求?根据我的观察,如果任何陈旧数据在uart接收数据寄存器中,它将阻止dma在启用时启动(我相信因为没有新数据将触发dma中断以清除该字节并继续正常)。
如果在设置dmar位后接收到中断上下文和数据(即uart dma receive enabled),dma会在退出中断后清除该位还是会锁定dma?如果是这样,如何在启用dma和退出中断上下文之间防止这种竞争条件(注意所有中断都是相同的优先级,因此在当前中断时有效地禁止中断)。
答案 0 :(得分:2)
试试这个
RXNE
中的UARTx->SR
位。或
CR1
,将CR1
设置为0(或清除RE
位),阅读SR
和DR
,设置DMA并恢复{ {1}}。