STM32F411からPCにチャーを送信すると、ガーベジに読み込まれるときに問題が発生しますが、逆の操作を行うと、MCUは送信されたcharを正しく読み取ります。STM32F4 USART1はガベージを送信します
私は、次の操作を実行します。
- GPIOAクロックを有効にし、ピン9と10の代替機能を設定します。最初の送信 としてアイドルフレームを送信するために16MHzの(HSI)*
- 構成USARTで9600ボーもたらすため
- 、USART1を有効M(メッセージ長)のデフォルト値のまま、ストップビット、DMA
- セット
USARTDIV
*バス周波数も100MHzのAPB2
と同じ結果が出ました。その後
設定USART
// 1. Enable USART
SET_BIT(USART1->CR1, USART_CR1_UE);
// 5. Select the desired baud rate in BRR
SET_BIT(USART1->BRR, 0x683); // USARTDIV
// 6. Set TE in CR1 to send an idle frame as first transmission
SET_BIT(USART1->CR1, USART_CR1_TE);
私は次のような構成でRealTerm2.0とa
文字を確定しようとしています:
9600 8N1 None
文字は、次のコードによって送信されます
void SendChar_USART(char pChar)
{
// Transmitter 7, 8
// 7. Write the data to send in the DR register (this clears TXE)
USART1->DR = pChar;
while(!READ_BIT(USART1->SR, USART_SR_TXE));
}
012絶対同じ構成でUSART2への切り替え
アップデート1
は、問題を解決し、未解決しかし、この質問、シリアル端末からテキストを回復することが可能である「なぜUSART1が期待通りに動作しません?」
、。 –
@old_timer私はディスカバリーボードを持っており、データシートの回路図に従ってEMIF02(EMIフィルタ)の電源ピンとIDピンに接続されています。高い周波数の信号に影響を与える要素はないようです。 これはおそらく問題の原因ですが、なぜアウトバウンドチャネルだけが混乱しているのかは興味深いです。最初はそれをチェックしなかったのは私の過ちです。今質問を削除する必要がありますか? – hrust
私はあなたがこの状態でそれを残すことができない場合、またはあなた自身の質問に答えることができないと思う、私はそれを行う方法があることを知っているか、または攻撃的ではないことを行う時間があるそれに)。私のコードを見ると、私はuart2だけを使って、uart1と混乱しなかったと思います。これらのボードのうちの1つは、他のUARTに入ってきたものをエコーし、stlinkに接続されていないものにループバックをかけました。 –