Project

General

Profile

Actions

SettingPll

STM32CubeMXでプロジェクトを作ると、デフォルトではPLLの設定は低速です。
STM32F429ZIだと 16MHz で、CubeMXの Clock Configuration タブで速度が確認できます。

ボードに発振器が載っているか確認

CubeMXでNUCLEO用のプロジェクトを開いているときに、メニューバーのHelp-Docs&Resourcesをクリックすると、評価ボードに応じたドキュメント(pdf)が簡単に入手できます。
NUCLEO-F429ZIなら UM1974 の 6.8 OSC に発振器の情報が記載されています。

UM1974 の 6.8 OSC より、以下が分かります。

  • HSE用発振器は非搭載
  • LSE用発振器を搭載、部品の型番でネット検索すると2端子なので発振子(CubeMX上では BYPASS Clock Source でなく Resonator を選ぶ)

CubeMX上で、Pinout&Configurationタブの System Core-RCC の LSE を Crystal/Ceramic Resonator に直すのと、
Clock Configurationタブの HCLKにmaxの180を入力して、Clock Wizardまかせでほかのクロックを設定してもらいましょう。
あとは、Timerを使うときにAPB1とAPB2のどちらのペリフェラルだか気にしなくてもよいように、APB2のPrescalarをAPB1と同じ/4に直します。

トラブルシューティング

正しく動くが、なぜか自分の書いたコードに到達するまで数秒かかる

CubeMX上で、ボードに未実装のクロック発振器/子を使う設定になっている場合、「発振器/子から出力されるクロックを待つけれどタイムアウトしてSTM32内蔵発振器に切り替える」という動作をします。
正しく動いているように見えても誤りがあります。
なお、Nucleoボードによっては「基板に発振器/子が実装済みなのだけれど、ハンダゴテでSBxxをブリッジしないとSTM32に未接続となる」ものがあるので、注意が必要です。

SerialWireViewerへの文字出力が化ける

SWOの基準周波数の自動認識に失敗している可能性があります。
J-Link(化したST-Link)を使っている場合、Debug Configurationsのダイアログで Startupタブ-Enable SWOの右の CPU freqを0(自動)から 180000000 (ゼロ7つ)に直してください。
CPU freqが設定されていれば、SWO freqは0(自動認識)のままで大丈夫なようです。


累計表示回数:77

Updated by mole lord 3 months ago · 3 revisions