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

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
    Connect the ST-LINK V2 programmer to the Blackpill STM32 board as shown in the image above.

  2. ST-LINK V2 プログラマをコンピュータに接続します。

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

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

    PlatformIO tab

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

STM32CubeMX による初期コード生成

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

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

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

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

    Serial Wire

    備考

    This is important because without this setting, you won't be able to upload the firmware to the board.

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

    For the Blackpill STM32 board, the LED pin is PC13. You should change the pin according to your board.

    GPIO Configuration

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

    ヒント

    This is useful because you can refer to the pin by name in your code.

    User Label

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

    RCC

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

    1. Input 25MHz in the HSE Value field
    2. Select HSE in PLL Source Mux and PLLCLK in System Clock Mux
    3. Input 100MHz in the HCLK field and press Enter to calculate the values for the other fields.
    注記

    The Blackpill STM32 board has a 25MHz crystal oscillator, so you should input 25MHz in the HSE Value field.

    Clock Configuration

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

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

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

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

    If you use Linux or macOS, you can use the following command to copy the code:

    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);
    注記

    If you named the LED pin LED in STM32CubeMX, the LED_GPIO_Port and LED_Pin will be defined in the gpio.h file, so you can use them in your code.

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

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

    PlatformIO tab

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

参考文献