環境構築
STM32の開発といえば「STM32CubeIDE」が主流でしたが、最近では公式の拡張機能により Visual Studio Code (VS Code) での本格的な開発が可能になりました.
今回は自作基板のセットアップをしていきます.
マイコンはSTM32F446REです.
詳しくはモジュールについての記事をご確認ください.
1. 必要なツールのインストール
VS CodeでSTM32を扱うには、以下の3つのコンポーネントが必要です。
- STM32CubeMX: プロジェクト生成・周辺機能設定ツール。
- STM32CubeCLT (Command Line Tools): コンパイラ(GCC)、デバッガ(GDB)、書き込みツールを含むコマンドラインツールセット。
- STM32CubeIDE for Visual Studio Code: VS Code用の公式拡張機能。
手順
-
VS Code 拡張機能のインストール
-
STM32CubeCLTのインストール
- STマイクロ公式サイトからインストーラーをダウンロードし、画面の指示に従ってインストールします。
-
STM32CubeMXのインストール
- STマイクロ公式サイトから入手してインストールします。
2. プロジェクトの作成 (STM32CubeMX)
VS Codeで読み込むためのプロジェクトファイルを生成します。
-
STM32CubeMXを起動し、「ACCESS TO BOARD SELECTOR」を選択後MCU/MPU Selectorからチップを選択します.
選択したら右上のStart Projectを選択
-
Project Manager タブを開き、以下の設定を行います。
PLLM: / 8 に設定します(ここで2MHzになります)。
PLLN: * 168 に設定します(ここで336MHzになります)。
PLLP: / 2 に設定します。
System Clock Mux: PLLCLK を選択します。これで SYSCLK(マイコンの脳の速さ)が168MHz になります。
APB1 Prescaler (PCLK1): / 4 を選択してください。
結果として、その右側の APB1 peripheral clocks が 42 MHz になれば成功です。
- Pinout & Configuration: ピン設定を行います.
-
以下はAltair_MDD_V3の設定です.
encoder
- A0 A1 TIMER5
- B3 A15 TIMER2
- B6 B7 TIMER4
- C6 C7 TIMER3
MD
- B14(TIMER12 CH1) B15(TIMER12 CH2)
- A8(TIMER1 CH1) A9(TIMER1 CH2)
- A6(TIMER13 CH1) A7(TIMER14 CH1)
- B8(TIMER10 CH1) B9(TIMER11 CH1)
limit switch
- C0
- C1
- C2
- C3
Serial
- tx:A2 rx:A3 SERIAL2
- tx:B10 rx:C5 SERIAL3
CAN
- tx:A12 rx:A11 CAN1
- tx:B13 rx:B12 CAN2
このピンがオレンジの状態では設定が完了していません.そこで左のタブのTimerをあけて設定します
エンコーダーの場合はつぎの画像のようにピンは何も触らず,Combined ChannelsをEncoder Modeに設定します.
PWMピンの場合はピンを一個ずつ設定します.
使用するチャンネルをPWM Generation CH1などと設定します.タイマー10以降はActicatedにチェックを入れる必要があります(12以外)
すべて完了するとピンがすべて緑になるはずです.
続いてCAN通信の設定を行います.
左のConnectivityを開いてCAN1,CAN2を開き設定します[NVIC] タブ CAN1 RX0 interrupt にチェックを入れる
以下ようにエラーが出るときはいったんPrescalerに8を入れBit 1 Bit2 を設定してから3に戻すとエラーがなくなります.

-
Project Manager: プロジェクト設定
- Project Name: 任意のプロジェクト名を入力。
- Toolchain / IDE: ここで必ず 「CMake」 を選択してください(※重要)。
3.「GENERATE CODE」をクリックしてコードを生成します。
3. VS Codeでのインポートとビルド
-
プロジェクトが開くと、通知が出る場合がありますが、STM32プロジェクトとして構成を許可(Yesを選択)します。
-
ライブラリはCoreの中のIncに入れます.
- リポジトリをダウンロード
https://github.com/Altairu/Altair_library よりダウンロードします。
- フォルダをコピー
Altair_library_for_CubeIDEフォルダを選択してコピーします。- プロジェクトに配置
STM32CubeIDE プロジェクトの
Core/Inc内に貼り付けます。Core/ └── Inc/ └── Altair_library_for_CubeIDE/ ← ここに配置 ├── altair.h ├── can_lib.h / can_lib.c ├── encoder.h / encoder.c ├── kinematics.h / kinematics.c ├── motor_driver.h / motor_driver.c ├── pid.h / pid.c └── serial_lib.h / serial_lib.c- CMakeLists.txt を編集
cmake/stm32cubemx/CMakeLists.txtを以下のように編集します。# STM32CubeMX generated include paths set(MX_Include_Dirs ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Inc ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Inc/Altair_library_for_CubeIDE # ← 追加 ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Inc ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/CMSIS/Device/ST/STM32F4xx/Include ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/CMSIS/Include ) # STM32CubeMX generated application sources set(MX_Application_Src ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/main.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/stm32f4xx_it.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/stm32f4xx_hal_msp.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/sysmem.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/syscalls.c ${CMAKE_CURRENT_SOURCE_DIR}/../../startup_stm32f446xx.s # ↓ 使うライブラリの .c を追加 ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Inc/Altair_library_for_CubeIDE/can_lib.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Inc/Altair_library_for_CubeIDE/encoder.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Inc/Altair_library_for_CubeIDE/kinematics.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Inc/Altair_library_for_CubeIDE/motor_driver.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Inc/Altair_library_for_CubeIDE/pid.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Inc/Altair_library_for_CubeIDE/serial_lib.c )- main.c にインクルード
main.cの先頭に以下を追加するだけで全ライブラリが使用可能になります。#include "Altair_library_for_CubeIDE/altair.h" -
サイドバーの「Build」ボタン、または画面下のステータスバーにあるビルドアイコンをクリックしてコンパイルを実行します。
- 成功すると、フラッシュやRAMの使用量が表示され、
.elfファイルが生成されます。
[main] フォルダーのビルド中: C:/Users/106no/workspace/hoge/build/Debug [build] ビルドを開始しています [driver] 注: プリセット Debug を使用してビルドしていますが、VS Code設定から適用されるオーバーライドがいくつかあります。 [proc] コマンドを実行しています: cube-cmake --build C:/Users/106no/workspace/hoge/build/Debug -- [build] [1/2] Building C object CMakeFiles/hoge.dir/Core/Src/main.c.obj [build] [2/2] Linking C executable hoge.elf [build] Memory region Used Size Region Size %age Used [build] RAM: 2520 B 128 KB 1.92% [build] FLASH: 15316 B 512 KB 2.92% [driver] ビルド完了: 00:00:00.429 [build] ビルドが終了コード 0 で終了しました - 成功すると、フラッシュやRAMの使用量が表示され、
4. デバッグと書き込み
-
PCにSTM32ボードを接続します。
-
VS Codeの「実行とデバッグ」ビュー(Ctrl+Shift+D)を開きます。
-
STlinkのアップデート
PCにSTlinkを接続してください。(マイコンに電源も入れてください)
実行とデバックを開いてSTM32CUBE DEVICES AND BOARDSからファームウェアをアップデートしてください。
-
デバッグ構成で「STM32 CORTEX DEBUG」または「STLink GDB Server」を選択して実行(F5)します。
-
プログラムがボードに書き込まれ、
main()関数の先頭で一時停止します。
一度書き込むと次からはマイコンに電源が入ると勝手に実行されます(PCから実行とデバックを使わなくても)

































