Skip to main content

1. プロジェクト作成

動機#

In this section we will use STM32CubeMX to generate a working project for a specific MCU. このプロジェクトは、このハウツー・ガイド以降のステップの基盤となるプロジェクトです。

We will refine the project using STM32CubeMX in coming steps and write and integrate code to make all required peripherals work.

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

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

目標#

The goal is to create a project in STM32CubeMX that can be flashed to your board and executed. デバッガ機能を備えたIDE(例: STM32CubeIDEまたはIAR Embedded Workbench)がある場合は、マイクロコントローラ上でプロジェクトをデバッグおよびステップ実行できることも確認する必要があります。

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

検証#

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

検証ポイント検証内容
IDEでプロジェクトを開くThe project was generated correctly by STM32CubeMX and can be used as starting point for further board bring up development.
プロジェクトのコンパイルプロジェクトがドライバによってパスも含めて適切に設定されていること。 コードをさらに作成してプロジェクトを繰り返し再コンパイルすることもできます。
ブレークポイントのヒットプロジェクトがデバッグ可能で、ブレークポイントで停止すること。 プロジェクトの状態を調べ、エラーを調査できます。

前提条件#

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

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

作業内容#

We will now go through the steps of creating a new project in STM32CubeMX. この例では、STM32F429マイクロコントローラを使用します。 当然、ご自身のハードウェアに搭載されるマイクロコントローラを選択してください。

In STM32CubeMX click "ACCESS TO MCU SELECTOR" in the "Start My Project from MCU":

新規プロジェクトの作成

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

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

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

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

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

ここで右上隅の[Generate Code]ボタンをクリックします。 If this is your first project for the selected MCU family (F4/F7/H7) STM32CubeMX automatically proposes to download the relevant STM32Cube Firmware package. これを受け入れ、後ほど使用する最新バージョンを入手します。

STM32CubeMX can download STM32Cube Firmware

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

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

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

The project generated by STM32CubeMX contains startup code specific to the MCU, interrupt table, system initialisation code, and HAL drivers for all the peripherals in the MCU.

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

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

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

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

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

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

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

At this step it is important to understand the concept of "User Code sections" used by STM32CubeMX before you start editing your project. All of the source files in the Core/Src folder in your project are generated by STM32CubeMX. When you later change the project configuration in STM32CubeMX, e.g. to enable a UART, some of these files will be regenerated. これらのファイルにコードを挿入した場合、 Your code will be lost when STM32CubeMX regenerates the project unless you follow one single rule:

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

Any code that you write outside of a User Code section will be deleted by 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の間に入力する必要があります。 If you put code outside this block it will be deleted by STM32CubeMX.

Caution
ユーザ・コード・セクション以外にコードを書き込まないでください。 Such code will be removed when STM32CubeMX generates code.

参考資料#

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