なんとか⭐︎ロボコンズ STM32ライブラリ
- STM32CubeCLT 1.18.0
- STM32CubeMX 6.14.0
- Python 3.12.3
で開発・動作確認しています。
https://eyr1n.github.io/stm32rcos/
このライブラリには CMSIS-RTOS2(FreeRTOS) が必要です。
Pinout & Configuration
->System Core
->SYS
を選択Timebase Source
に空いているハードウェアタイマーを指定SysTick
は RTOS が使用するため
Pinout & Configuration
->Middleware and Software Packs
->FREERTOS
を選択Interface
にCMSIS_V2
を指定するAdvanced settings
->USE_NEWLIB_REENTRANT
をEnabled
にするTasks and Queues
->defaultTask
を以下のように設定する- Stack Size (Words): 1024 (RAMサイズに合わせて調整する)
- Entry Function:
main_thread
- Code Generation Option: As weak
Project Manager
->Project
を選択Project Settings
->Toolchain / IDE
にCMake
を指定するThread safe Settings
->Enable multi-threaded support
にチェックを入れる
Project Manager
->Advanced Settings
を選択Register Callback
->CAN
またはFDCAN
をENABLE
にするRegister Callback
->UART
をENABLE
にする
STM32CubeMX を用いて CMake 向けにプロジェクトを書き出したあと、STM32 VS Code Extension の Import CMake project
からプロジェクトを取り込み、CMakeLists.txt
を以下のように書き換えます。
# ~前略~
# Add linked libraries
target_link_libraries(${CMAKE_PROJECT_NAME}
stm32cubemx
# Add user defined libraries
)
# ~前略~
include(FetchContent)
FetchContent_Declare(stm32rcos
GIT_REPOSITORY https://github.com/eyr1n/stm32rcos.git
)
FetchContent_MakeAvailable(stm32rcos)
# Add linked libraries
target_link_libraries(${CMAKE_PROJECT_NAME}
stm32cubemx
# Add user defined libraries
stm32rcos
stm32rcos::printf_float
)
サンプルコードは各クラスのドキュメントに付属しています。
Core/Src/main_thread.cpp
のようなファイルを作成し、CMakeLists.txt
の target_sources
を以下のようにして、main_thread.cpp
内にサンプルコードを貼り付ければ動作するはずです(もちろん、CubeMXを用いて各ペリフェラルを適切に設定し、使用するピンやIDなどは各々の環境に合わせる必要があります)。
# ~前略~
# Add sources to executable
target_sources(${CMAKE_PROJECT_NAME} PRIVATE
# Add user sources here
Core/Src/main_thread.cpp
)
# ~後略~
MIT License