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

STM32Cube フレームワークによる LED 点滅

STM32Cube フレームワークを使用して BlackPill STM32 ボード上の LED を点滅させてみましょう。

STM32Cube フレームワーク​

STM32Cube フレームワークを使用すると、STM32 マイクロコントローラーの能力を最大限に活用できます。 STM32Cube フレームワークは、STM32 ハードウェアへの低レベルのアクセスを提供し、より効率的でパフォーマンスが最適化されたコードを作成できるようにします。

事前準備​

このチュートリアルでは、以下の機器を使用します。

BlackPill STM32 ボード​

MCU:STM32F411CEU6 ボード: WeAct Black Pill V2.0 回路図

安価なクローン BlackPill STM32 ボードは 4 ドル以下で購入できます。他の STM32 ボードを使用することもできますが、platformio.ini ファイルと LED ピン番号を変更する必要があります。

ファームウェアを基板に書き込むために使用します。安価なクローン ST-LINK V2 は 5 ドル以下で購入できます。

開発環境の準備​

VSCode と PlatformIO​

PlatformIO は、VSCode 拡張機能マーケットプレイスからインストールできます。

STM32CubeProgrammer​

ファームウェアを基板に書き込むためのツールです。

STM32CubeMX​

このツールを使用すると、STM32 マイクロコントローラーを構成し、プロジェクトの初期化コードを生成できます。

リポジトリの取得​

git clone --branch blackpill-led-blink-stm32cube https://github.com/yuichiroaoki/stm32-tutorial.git
cd stm32-tutorial

クイックスタート​

  1. BlackPill STM32 ボードを ST-LINK V2 書き込み器に接続します。

    ST-LINK V2 Clone
    上の画像のように、ST-LINK V2 と BlackPill STM32 ボードを接続します。

  2. ST-LINK V2 書き込み器を PC に接続します。

  3. VSCode でプロジェクトフォルダーを開きます。

  4. 左側のサイドバーの「PlatformIO」タブをクリックし、「Upload」ボタンをクリックしてファームウェアをボードにアップロードします。

    PlatformIO tab

これで、BlackPill STM32 ボード上の LED が点滅しているのが確認できるはずです。

STM32CubeMX による初期コード生成​

STM32CubeMX を使用すると、STM32 マイクロコントローラーを構成し、GPIO 構成やクロック構成などのプロジェクトの初期化コードを生成できます。

  1. STM32CubeMX を開き、新しいプロジェクトを作成します。

  2. STM32F411CE マイクロコントローラーを選択します。

  3. サイドバーの SYS をクリックし、[デバッグ] ドロップダウン メニューから Serial Wire を選択します。

    Serial Wire

    備考

    この設定を行わないと、基板にファームウェアを書き込めなくなるため、必ず設定してください。

  4. [ピン配置と構成] タブで LED ピンをクリックし、[モード] ドロップダウン メニューで GPIO_Output を選択します。

    BlackPill STM32 ボードの LED ピンは PC13 です。別の基板を使う場合は、その基板の LED ピンに合わせて変更してください。

    GPIO Configuration

  5. LED ピンを右クリックし、Enter User Label を選択し、ピンに LED という名前を付けます。

    ヒント

    ラベルを付けると、コード内でピンを名前で指定できるようになります。

    User Label

  6. サイドバーの RCC をクリックし、高速クロック (HSE) ドロップダウン メニューから Crystal/Ceramic Resonator を選択します。

    RCC

  7. Clock Configuration タブをクリックし、次のようにクロック設定を構成します。

    1. HSE Value 欄に 25MHz を入力します。
    2. PLL Source Mux で HSE、System Clock Mux で PLLCLK を選択します。
    3. HCLK 欄に 100MHz を入力し、Enter キーを押して他の値を自動計算します。
    注記

    BlackPill STM32 ボードは 25MHz の水晶振動子を搭載しているため、HSE Value 欄には 25MHz を入力します。

    Clock Configuration

  8. Project Manager タブをクリックし、Toolchain Folder Location をプロジェクトの保存場所に設定し、コードを生成します。

これで、プロジェクトの初期化コードが完成しました。

PlatformIO で生成されたコードを使用する​

  1. 生成されたコードを PlatformIO プロジェクトフォルダーの src フォルダーにコピーします。

    Linux または macOS では、次のコマンドでコードをコピーできます。

    cp -r <STM32CubeMX project folder>/Core/**/* <PlatformIO project folder>/src/
  2. main.c ファイルの while ループの最後に次の 2 行を追加して、LED を点滅させます。

    main.c
    /* USER CODE BEGIN 3 */
    HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
    HAL_Delay(1000);
    注記

    STM32CubeMX で LED ピンに LED というラベルを付けると、gpio.h に LED_GPIO_Port と LED_Pin が定義され、コード内で使えるようになります。

  3. STM32CubeMX によって生成された構成ヘッダー ファイルを使用するには、次の行を platformio.ini ファイルに追加します。

    platformio.ini
    board_build.stm32cube.custom_config_header = yes
  4. 左側のサイドバーの「PlatformIO」タブをクリックし、「Upload」ボタンをクリックしてファームウェアをボードにアップロードします。

    PlatformIO tab

これで、BlackPill STM32 ボード上の LED が点滅しているのが確認できるはずです。

参考文献​