- Nucleo64ボードに必要な開発プラットフォームの選択とダウンロード
- 回路図とハードウェアのセットアップ
- STM32Nucleo64開発ボード用のSTM32CubeMXの使用を開始する
- TrueSTUDIOを使用したSTM32Nucleo64開発ボードのプログラミング
- プッシュボタンを使用してLEDを制御するSTM32Nucleo64プログラム
- TrueSTUDIOを使用したデバッグとSTM32Necleo64開発ボードへのコードのアップロード
私たちの多くは、Arduino、Raspberry Pi、ESP8266、NoduMCU、8051などの人気のあるマイクロコントローラーと開発ボードに精通している必要があります。実際、ほとんどの人にとって、Arduinoは最初の開発ボードでしたが、深く掘り下げて始めますプロのデザインでは、Arduinoの制限(コスト、汎用性、安定性、速度など)をすぐに認識し、PIC、STM、ルネサスなどのよりネイティブなマイクロコントローラープラットフォームに移行する必要性を理解します。
PICマイクロコントローラーを学ぶための初心者をガイドする一連のPICマイクロコントローラーチュートリアルについてはすでに説明しました。同様に、この記事から始めて、STM32プラットフォームを使用して完全な初心者が学習および開発するのに役立つ一連のSTM32Nucleo64開発ボードチュートリアルも計画します。 Nucleo64開発ボードは、プロの開発者だけでなく愛好家にとっても低コストで使いやすいプラットフォームです。STM32 Nucleo64開発ボードをまったく使用したことがない場合は、先に進む前に、このNucleo64レビュービデオをチェックして、このボードの基本を理解してください。ビデオは、ARMMbedプラットフォームを使用してSTM32をプログラムする方法も示しています ただし、このチュートリアルでは、TrueSTUDIOと呼ばれるSTMicroelectronicsの別の無料で使用できるプラットフォームを使用します。
注:STM32 Nucleo64開発ボードには多くのバージョンがあり、このチュートリアルで使用される特定のボードはNUCLEO-F030R8です。このボードは、主に低コストのために選択しました。別のバージョンを使用している場合でも、チュートリアルで説明されているほとんどのことで開始できます。
Nucleo64ボードに必要な開発プラットフォームの選択とダウンロード
マイクロコントローラーの使用を開始するには、Arduinoボード用のArduino IDE、AVRマイクロコントローラー用のAtmel Studio、PIC用のMP LabなどのプログラミングIDEが必要です。したがって、ここでは、プログラミングとデバッグを実行するためのSTM32Nucleo64ボード用のIDEも必要です。STM32ファミリは、次のIDEとツールチェーンをサポートする32ビットマイクロコントローラで構成されています。
- IAREmbeddedWorkbench®forARM®(EWARM)。
- MDK-ARMキール
- TrueSTUDIO
- STM32用のシステムワークベンチ
ここでのチュートリアルでは、TrueSTUDIOを使用してコードを記述、コンパイル、およびデバッグします。これは、ライセンスを必要とせずに商用プロジェクトでも無料でダウンロードして使用できるためです。次に、STM32CubeMXを使用してSTM32ボード用の周辺機器ドライバーを生成し、プログラミングを容易にします。プログラム(16進ファイル)を開発ボードにアップロードするには、通常、STM32 ST-LINKユーティリティツールを使用しますが、代わりにTrueSTUDIO自体を使用してこれを行います。TrueSTUDIOには、プログラマーが16進ファイルをSTM32ボードに直接アップロードできるデバッグモードがあります。TrueSTUIOとSTM32CubeMXはどちらも簡単にダウンロードできます。以下のリンクをたどり、サインアップしてセットアップをダウンロードしてください。次に、それらをラップトップにインストールします。
- STM32CubeMXをダウンロード
- TrueSTUDIOをダウンロード
回路図とハードウェアのセットアップ
ソフトウェアセクションとコーディングに進む前に、このプロジェクトのためにボードを準備しましょう。この記事で前述したように、プッシュボタンを使用してLEDを制御します。上記のリンク先のビデオをご覧になった方は、STM32開発ボードの両側にSTMorphoピンと呼ばれる2セットのコネクタピンがあることをすでにご存知でしょう。下の回路図に示すように、これらのピンに押しボタンとLEDを接続しました。
このプロジェクトでは回路接続が簡単です。GNDに対してPORTAのPA5にLEDを接続し、PORTCのPC13にスイッチを接続する必要があります。接続が確立されると、テストのセットアップは次のようになりました。
または、ボードに内蔵されているLEDとプッシュボタンを使用することもできます。これらの内蔵LEDと押しボタンも、回路図に示すように同じピンに接続されています。練習用にのみ外付け部品を追加しました。以下のSTM32開発ボードのピン図は、各モルフォピンがオンボードのどこに接続されているかを知るのに役立ちます。
STM32Nucleo64開発ボード用のSTM32CubeMXの使用を開始する
ステップ1:インストール後、STM32CubeMXを起動し、アクセスボードセレクターを選択してSTM32ボードを選択します。
ステップ2: NUCLEO-F030R8のようなSTM32ボード名でボードを検索し、写真に表示されているボードをクリックします。別のボードがある場合は、それぞれの名前を検索してください。このソフトウェアは、STMicroelectronicsのすべてのSTM32開発ボードをサポートします。
ステップ3:下の図に示すように、[はい]をクリックして、すべての周辺機器をデフォルトモードで初期化します。プロジェクトの必要に応じて、後で必要なものを変更できます。
[はい]をクリックすると、画面は下の画像と緑色のピンのようになり、デフォルトで開始されていることを示します。
ステップ4:これで、ユーザーはカテゴリから目的の設定を選択できます。このチュートリアルでは、プッシュボタンを使用してLEDを切り替えます。そのため、LEDピンを出力、スイッチピンをINPUTにする必要があります。
任意のピンを選択できますが、下の図に示すように、PA5を選択し、その状態をGPIO_Outputに変更して、出力ピンとして機能させるようにしています。
同様に、プッシュボタンのステータスを読み取ることができるように、GPIO_InputとしてPC13を選択しています。
または、以下に示すように、[ピン配置]タブと[構成]タブからピンを構成することもできます。
ステップ5:次のステップでは、ユーザーは外部および内部発振器に応じてマイクロコントローラーとピンに必要な周波数を設定できます。デフォルトでは、内部8 MHz水晶発振器が選択されており、PLLを使用することにより、この8は48MHzに変換されます。デフォルトでは、STM32ボードまたはマイクロコントローラーとピンは48MHzで動作します。
ステップ6: プロジェクトマネージャーに移動し、プロジェクトに名前を付け、プロジェクトの場所を指定し、ツールチェーンまたはIDEを選択します。ここではTrueSTUDIOを使用しているので、以下のように選択しました。
ステップ7:下の画像の赤い円の横にある[コードの生成]マークをクリックします。
ステップ8:表示されたポップアップが表示されたら、[プロジェクトを開く]をクリックします。ただし、この手順の前にTrueSTUDIOがインストールされていることを確認してください。
TrueSTUDIOを使用したSTM32Nucleo64開発ボードのプログラミング
これで、TrueSTUDIOがワークスペースの場所を要求した場合、コードまたはプロジェクトがTrueSTUDIOで自動的に開き、ワークスペースの場所を指定するか、デフォルトの場所を使用します。
ユーザーには以下の画面が表示され、赤い色のコーナーマークをクリックする必要があります。
これで、TreuSTUDIOIDEにコードが表示されます。左側の「src」フォルダーの下に、STM32Cubeから既に生成されている他のプログラムファイル(拡張子は.c)が表示されます。main.cファイルをプログラムするだけです。main.cファイルでも、CubeMXによってセットアップされたものはすでにいくつかあり、プログラムに合わせて編集するだけで済みます。main.cファイル内の完全なコードは、このページの下部にあります。
プッシュボタンを使用してLEDを制御するSTM32Nucleo64プログラム
必要なすべてのドライバーとコードはSTM32CubeMXによって生成されるため、出力としてLEDピンを構成し、入力としてプッシュボタンを構成するだけで済みます。押しボタンを使用してLEDを制御するためのプログラムは、main.cファイルに書き込む必要があります。完全なプログラムは、このページの下部にあります。その説明は次のとおりです。
プッシュボタンを使用してLEDを切り替えるためのコードのみを記述しました。これを実現するために、最初にLEDとプッシュボタンのピンを定義します。ここでは、PORTAのピン5番号にLEDを定義しました。
#define LED_PORT GPIOA #define LED_PIN GPIO_PIN_5
そして、PORTCのピン番号13にスイッチを定義します。
#define SW_PORT GPIOC #define SW_PIN GPIO_PIN_13
次に、main関数で、使用されているすべての周辺機器を初期化しました。
/ *設定されたすべてのペリフェラルを初期化します* / MX_GPIO_Init(); MX_USART2_Init();
次に、ifステートメントを使用してプッシュボタンを読み取り、見つかったボタンを押すと(LOW)、LEDがその状態を切り替えます。
While(1){/ *ユーザーコード終了WHILE * / If(!HAL_GPIO_ReadPin(SW_PORT、SW_PIN)){HAL_GPIO_TogglePin(SW_PORT、LED_PIN); HAL_Delay(200); } / *ユーザーコード開始3 * /}
ここで、HAL_GPIO_ReadPin(SW_PORT、SW_PIN)関数には2つの引数があります。1つはPORTで、もう1つはスイッチが接続されるピンであり、このピンはSTM32CubeMXでペリフェラルを構成するときにINPUTとして構成されます。
TrueSTUDIOを使用したデバッグとSTM32Necleo64開発ボードへのコードのアップロード
次に、プログラマーケーブルを使用してボードをコンピューターに接続します。接続すると、ボードに必要なドライバーが自動的にダウンロードされます。これは、デバイスマネージャーを使用して確認できます。
次に、下の図の赤い丸でマークされたデバッグアイコンを押してプログラムをコンパイルし、デバッグモードに入ります。
デバッグモードでは、コードは自動的にアップロードされます。次に、「再開」またはF8(下の図の赤い回路でマークされている)を押してコードを実行する必要があります。
これで、プッシュボタンを押してLEDの制御をテストできます。コードによると、押しボタンを押すたびにLEDの状態が変化するはずです。完全な作業は、このページの下部にリンクされているビデオにもあります。
テスト後、下の画像の赤い丸でマークされた終了アイコンを押してプログラムを終了することもできます。