メイン・コンテンツまでスキップ

1. プロジェクト作成

動機

このセクションでは、STM32CubeMXを使用して、特定のマイクロコントローラ向けの作業用プロジェクトを生成します。 このプロジェクトは、このハウツー・ガイド以降のステップの基盤となるプロジェクトです。

今後のステップでは、STM32CubeMXによってプロジェクトをさらに詳細に設定し、必要なすべてのペリフェラルが機能するように、コードを作成して組み込みます。

このプロジェクトは、長期にわたって存続させるものであり、維持される必要があります。 さまざまなバージョンを引き続き使用できるようにし、以前のバージョンでも実行できるようにするための方策の決定が必要です。 新しいハードウェアで実行できるようにするのか、または単にそのハードウェアを再確認するのかを決定します。

小さなテスト・プログラムが多数必要になる場合もあります。 そのような場合は、このプロジェクトが出発点として適しています。

目標

目標は、ボードにFlashして実行できるプロジェクトをSTM32CubeMXで作成することです。 デバッガ機能を備えたIDE(例: STM32CubeIDEまたはIAR Embedded Workbench)がある場合は、マイクロコントローラ上でプロジェクトをデバッグおよびステップ実行できることも確認する必要があります。

デバッガがない場合は、プロジェクトのさまざまな段階でデバッグ・ステートメントを出力する方法を見つける必要があります。 たとえば、 シリアル・ポートを使用する方法があります。

検証

次の表に、このセクションの検証ポイントを示します。

検証ポイント検証内容
IDEでプロジェクトを開くプロジェクトがSTM32CubeMXで適切に生成され、この後のボード立ち上げの出発点として使用できること。
プロジェクトのコンパイルプロジェクトがドライバによってパスも含めて適切に設定されていること。 コードをさらに作成してプロジェクトを繰り返し再コンパイルすることもできます。
ブレークポイントのヒットプロジェクトがデバッグ可能で、ブレークポイントで停止すること。 プロジェクトの状態を調べ、エラーを調査できます。

前提条件

以下に、このステップの前提条件を示します。

  • STM32ベースのボード
  • プログラミング / デバッグ・インタフェース - ST-LINK、JLINK、またはこれらに類するもの
  • STM32CubeMXがインストールされていること
  • IDEがインストールされていること - STM32CubeIDE、IAR Embedded Workbench、Keil uVision、またはこれらに類するもの

作業内容

ここからは、STM32CubeMXで新規プロジェクトを作成するステップを説明します。 この例では、STM32F429マイクロコントローラを使用します。 当然、ご自身のハードウェアに搭載されるマイクロコントローラを選択してください。

STM32CubeMXで、[Start My Project from MCU]の[ACCESS TO MCU SELECTOR]をクリックします。

新規プロジェクトの作成

STM32評価キット(STM32F429Discoveryボードなど)を基に新規プロジェクトを開始することも可能です。 いずれかの評価キットに基づいてハードウェア設計を行う場合には、この方法を推奨します。

次に、関連するマイクロコントローラを選択します。 ここでは、STM32F429ZIT6Uを選択しています。

マイクロコントローラの選択

[Project Manager]タブに移動して、プロジェクト名を入力します。 当然、新しいプロジェクトの場所も選択できます。 [Application Structure]の下で[Advanced]を選択します。 [Toolchain / IDE]では、IDEを選択する必要があります。 この例では、IARを選択しています。

プロジェクト名とIDEの設定

ここで右上隅の[Generate Code]ボタンをクリックします。 これが選択したマイクロコントローラ・ファミリ(F4 / F7 / H7)で最初のプロジェクトである場合、関連するSTM32Cubeファームウェア・パッケージをダウンロードするよう、自動的に促されます。 これを受け入れ、後ほど使用する最新バージョンを入手します。

STM32CubeMXでSTM32Cubeファームウェアのダウンロードが可能

[Open Project]をクリックして、IDEでプロジェクトを開きます。

プロジェクトが生成される

プロジェクトがIAR Embedded Workbenchで開かれる

STM32CubeMXで生成されるプロジェクトには、マイクロコントローラ固有の起動コード、割込みテーブル、システム初期化コード、マイクロコントローラ内のすべてのペリフェラル用のHALドライバが含まれます。

これで、プロジェクトをコンパイルし、IDEからデバッグできるようになりました。 IARで、[Project]>[Make]をクリックしてプロジェクトをコンパイルし、[Project]>[Download and Debug]をクリックしてプロジェクトをデバッグします。

IAR Embedded Workbenchでのプロジェクトのデバッグ

IARプロジェクトは、STLinkデバッガを使用するように設定されます。 別のデバッガを使用する場合は、IDEでプロジェクトのデバッガのプロパティを変更します。

メインループが連続的に実行される

通常、オペレーティング・システムなしで実行するプロジェクトではmainのwhileループが重要になります。 ブレークポイントを設定し、そこに移動できることを確認します。ループに何らかのコードを追加してみてもいいでしょう。

IDEでプロジェクトのさまざまな場所を参照し、その構造に慣れることを推奨します。 SystemInitからmainまでのステップ実行も試してください。

ユーザ・コード・セクション

このステップの重要なポイントは、プロジェクトの編集に着手する前に、STM32CubeMXで使用される「ユーザ・コード・セクション」の概念を理解することです。 プロジェクトのCore/Srcフォルダ内のソース・ファイルは、すべてSTM32CubeMXによって生成されます。 その後、STM32CubeMXでプロジェクトの設定を変更すると(UARTを有効化するなど)、これらのファイルの一部は再生成されます。 これらのファイルにコードを挿入した場合、 そのコードは、STM32CubeMXがプロジェクトを再生成すると失われます。ただし、次のルールに従うことで、そうした事態を防ぐことができます。

  • コードはユーザ・コード・セクションにのみ書き込む

ユーザ・コード・セクション以外の場所に書き込んだコードは、すべてSTM32CubeMXによって削除されます。

例として、Core/Src/main.cの最初の数行を見てみましょう。

main.c
int main(void)
{
/* USER CODE BEGIN 1 */

/* USER CODE END 1 */


/* MCU Configuration--------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
...
}

この場所(main関数の冒頭)にコードを挿入する場合は、USER CODE BEGIN 1とUSER CODE END 1の間に入力する必要があります。 このブロック以外に書込んだコードは、STM32CubeMXによって削除されます。

Caution
ユーザ・コード・セクション以外にコードを書き込まないでください。 それらのコードは、STM32CubeMXがコードを生成する際に削除されます。

参考資料

ここにリンクされているドキュメントには、CubeMXの詳細情報が掲載されています。