STM32F4DiscoveryでCubeMXを試す


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

習うより慣れろ的な部分もありますので、まずは使ってみましょう

CubeMXを起動する

デスクトップにできたアイコンをクリックして実行。まずはプログラム等が最新版であるかチェックします。

[Help] - [Check for Updates] を実行し、チェックボタンをクリック。もし更新ファイルがあればインストールします。続いて

[Help] - [Install New Libraries] を実行。

STM32CubeMX Releasesと、STM32CubeF4 Releasesが最新であることを確認します。古い場合はチェックを入れて、[Install Now]をクリック。更新に多少時間がかかりますので慌てずに待ちます。

 

新しいプロジェクトを作成する

メイン画面のNew Projectをクリック。基盤を選択します。STM32F4Discoveryを使いますので、それを選択します。

今回は評価基板のDiscoveryを使いますが、自作基板等の場合は、MCUを選択することになります。が、いきなり自作基板を作れちゃう人は、このページみてないと思うので説明省略。

 

機能の設定

マイコンで実装する内容を左側のツリーから選択すると、ピン割り当てが行われ右側に表示されます。このピン割り当ては非常に重要で、異なる機能でピンが重複すると実装できません。これを回避するために、他のピン候補もある程度あり避けられますが、どうしても被る場合は機能そのものを選択することになります。本来はデータシートで一覧表をみながら考えたりするのですが、これだとピンに色まで付くのでわかりやすいですね。

この画面をみるとわかる通り、STM32F4Discoveryに実装されているボタンやLED、MEMS(ジャイロ等)がデフォルトで選択されています。灰色のピンが未割り当てとなり自由に使えるピンとなります。
機能ツリーを見るとわかるとおり、すでにピン衝突が発生しています。全ての機能を同時に使えないであろうことが一目瞭然です。
今回、まずは動かしてみることが目的ですので、ボタンとLEDが使えればOKということで、何も変更しないでOKです。

 

クロックの設定

機能の設定と同等以上に重要な設定がクロックです。マイコンは全てクロックを基準に動作しますので、この設定が間違っていると想像したものと違う動きになります。
まだこの段階ではクロックを変更する必要がないのですが、それぞれのクロックがどのように影響し、また設定されているかわかりますので、非常に便利な画面です。タイマ等を使うとき、どのクロックが基準になっているかで、1カウントの速さがかわりますのでとても重要です。

余談ですが、マイコンにはRTC(リアルタイムクロック)とよばれる機能があります。マイコンの電源を切っても時計は保持しておきたい、と誰もが思うことでしょう。この機能を実装するにはマイコン電源のほかに、時を刻む水晶発信器と電源(ボタン電池)が必要です。残念ながらSTM32F4Discoveryには両方とも未実装です。データシートの回路図の通り、回路自体はありますでの自分でRTC用水晶発信器をつけ、電池を組み込むと動作するようになります。この場合、ピン設定画面でRCCのLSEを有効にし、この画面でRTCへの接続をLSIからLSEに変更することで対応できます。従来であれば面倒な手順で初期化して定義する必要がありましたが、画面で設定するだけで実装できるのはありがたいですね。

2015/04/20 追記

RTCのクロックにLSEを使うには、アラームAを有効にしないと選択できない。
さらに、CubeMXで生成されるソースには不具合があり、HAL_Get_Time()が正常に動作しない。ソースの中の sTime->SubSeconds = (uint32_t)(hrtc->Instance->SSR); をコメントアウトする必要あり。