これで stm32f4-discovery ができました。stm32f4 を接続する uart の max232 を作成します。そして、usb-rs232 を使用して max232 に接続します。stm32f4 と PC を uart で通信できればと思います。そして、Linux でパテを開きます。しかし、uart ボーレートの設定には大きな問題があります。同じボーレートを設定すると、正しいメッセージを受信できません。私はオシロスコープの観測を使用しています。最後に、7680(stm32f4) と 3200(putty) を設定します。それから私は正しいメッセージを得ることができます。しかし、なぜ異なるボーレートで動作するのかわかりません。誰でも理由を教えてもらえますか? そして、それは私のコードです、thx https://gitcafe.com/ctc8631/stm32f4-test-uart
4 に答える
おそらく、時計の設定を確認する必要があります。ディスカバリ ボードには 8MHz のクリスタルがあり、たとえば、標準周辺機器ライブラリの関連する構成ファイル (Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c) は 25Mhz のクリスタル用に設定されているようです。これらの定義があります
#define PLL_M 25
#define PLL_N 336
#define PLL_P 2
#define PLL_Q 7
25MHz から 168Mhz を生成するには
#define PLL_M 8
#define PLL_N 288
#define PLL_P 2
#define PLL_Q 6
8MHz から 144Mhz を取得します。
編集:ファイルが含まれているときにすでに定義されていない限り、stm32f4xx.hは「HSE_VALUE」を25000000(25MHz)と定義しているため、これを行うだけでは不十分であることが判明しました。私が見た適切に動作する例は、したがって未定義であり、stm32f4xx_conf.h で 8000000 (8MHz) に再定義されています。しかし、適切なことは、コンパイラ コマンド ラインで定義することだと思います (つまり、IDE を使用している場合は、いくつかのプロパティ ボックスで)。少なくとも、IAR EWARM では問題なく動作しました。
私はまったく同じ問題を抱えていました。プロジェクトでさまざまなライブラリとインクルードファイルを使用しました。それらのほとんどは、ST によって配信されたオリジナルよりも新しいものでした。それが私の「アップグレード」の動機でしたが、それは大きな間違いでした。
私の解決策/回避策は次のとおりです。
TRUEスタジオを使用してください。新しい Embedded C アプリケーションを作成します。ウィザードを正しく設定します (明確ですが、これに関するビデオがあります: http://www.youtube.com/watch?v=mT5bAgpW3jU )。必要なファイルをすべて生成し、すべてを適切にセットアップします (プロジェクト構造、デバッグ インターフェイスなど)。独自のソースを追加し、必要なものを変更すると、USARTx は目的のボーレートで動作します。
周辺クロックの設定が間違っていて、動作速度が合っていないのが原因だと思います。問題の原因が見つからないのは私の意見ですが、別の IDE を使用している場合は、ボード固有のライブラリを元に戻すことをお勧めします。