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 書き込み器
ファームウェアを基板に書き込むために使用します。安価なクローン 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
クイックスタート
-
BlackPill STM32 ボードを ST-LINK V2 書き込み器に接続します。

上の画像のように、ST-LINK V2 と BlackPill STM32 ボードを接続します。 -
ST-LINK V2 書き込み器を PC に接続します。
-
VSCode でプロジェクトフォルダーを開きます。
-
左側のサイドバーの「PlatformIO」タブをクリックし 、「
Upload」ボタンをクリックしてファームウェアをボードにアップロードします。
これで、BlackPill STM32 ボード上の LED が点滅しているのが確認できるはずです。
STM32CubeMX による初期コード生成
STM32CubeMX を使用すると、STM32 マイクロコントローラーを構成し、GPIO 構成やクロック構成などのプロジェクトの初期化コードを生成できます。
-
STM32CubeMX を開き、新しいプロジェクトを作成します。
-
STM32F411CE マイクロコントローラーを選択します。
-
サイドバーの
SYSをクリックし、[デバッグ] ドロップダウン メニューからSerial Wireを選択します。
備考この設定を行わないと、基板にファームウェアを書き込めなくなるため、必ず設定してください。
-
[ピン配置と構成] タブで LED ピンをクリックし、[モード] ドロップダウン メニューで
GPIO_Outputを選択します。BlackPill STM32 ボードの LED ピンは
PC13です。別の基板を使う場合は、その基板の LED ピンに合わせて変更してください。
-
LED ピンを右クリックし、
Enter User Labelを選択し、ピンにLEDという名前を付けます。ヒントラベルを付けると、コード内でピンを名前で指定できるようになります。

-
サイドバーの
RCCをクリックし、高速クロック (HSE) ドロップダウン メニューからCrystal/Ceramic Resonatorを選択します。
-
Clock Configurationタブをクリックし、次のようにクロック設定を構成します。- HSE Value 欄に 25MHz を入力します。
PLL Source MuxでHSE、System Clock MuxでPLLCLKを選択します。HCLK欄に 100MHz を入力し、Enterキーを押して他の値を自動計算します。
注記BlackPill STM32 ボードは 25MHz の水晶振動子を搭載しているため、HSE Value 欄には 25MHz を入力します。

-
Project Managerタブをクリックし、Toolchain Folder Locationをプロジェクトの保存場所に設定し、コードを生成します。
これで、プロジェクトの初期化コードが完成しました。
PlatformIO で生成されたコードを使用する
-
生成されたコードを PlatformIO プロジェクトフォルダーの
srcフォルダーにコピーします。Linux または macOS では、次のコマンドでコードをコピーできます。
cp -r <STM32CubeMX project folder>/Core/**/* <PlatformIO project folder>/src/ -
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が定義され、コード内で使えるようになります。 -
STM32CubeMX によって生成された構成ヘッダー ファイルを使用するには、次の行を
platformio.iniファイルに追加します。platformio.iniboard_build.stm32cube.custom_config_header = yes -
左側のサイドバーの「PlatformIO」タブをクリックし、「
Upload」ボタンをクリックしてファームウェアをボードにアップロードします。
これで、BlackPill STM32 ボード上の LED が点滅しているのが確認できるはずです。