2017-04-12 33 views
0

STM32シリーズでUART DMA受信を有効にするための要件は何ですか?私の見解から、古いデータがuart受信データレジスタに入っていれば、有効にしたときにdmaが開始されないようになります(新しいデータはdma割り込みをトリガしてそのバイトをクリアし、stm32 usart dmaがデータレジスタのバイトであれば受信を開始しない

dmarビットが設定された後に割り込みコンテキストが発生し、データが受信された場合(つまり、uart dma receiveがイネーブルされている場合)、dmaは割り込みを一旦終了しますか、もしそうなら、dmaがイネーブルされているときと、割り込みコンテキストを出るときの間のこの競合状態を防ぐ方法(すべての割り込みが同じ優先順位であるので、現在の割り込み中は割り込みは事実上無効になる)。

答えて

2

UARTx->SRRXNEビットをクリアし、DMAを設定した後、この

  • を試してみてください。

または

  • 保存CR1は、0からCR1を設定(またはREビットをクリア)、SRDRを読んで、DMAを設定し、CR1を復元します。
+0

私の質問は、なぜDMAが自動的にそのバイトを読み上げないのですか? @ベレンディ – ryeager

関連する問題