とよはし⭐︎ロボコンズ 新入生講習用ライブラリ
- STM32CubeF4 V1.28.1
- CMSIS-RTOS2 V2.1.0
- FreeRTOS Kernel V10.3.1
で開発・動作確認しています。
https://tutrobo.github.io/tutrc_harurobo_lib/
https://arm-software.github.io/CMSIS_5/RTOS2/html/index.html
https://www.freertos.org/Documentation/00-Overview
このライブラリには CMSIS-RTOS2(FreeRTOS) が必要です。
RTOSを使用するにあたって Timebase Source を SysTick
から任意のハードウェアタイマーに切り替えることが推奨されています。
Pinout & Configuration
-> System Core
-> SYS
を選択し、Timebase Source に空いているハードウェアタイマーを指定してください(TIM6 が一般的)。
Pinout & Configuration
-> Middleware and Software Packs
-> FREERTOS
を選択し、Interface に CMSIS_V2
を指定します。
Configuration欄から Advanced settings
を選択し、USE_NEWLIB_REENTRANT
を Enabled
にします。
Git submodule として導入するのがおすすめです。プロジェクトのルートで
$ git submodule add https://github.com/tutrobo/tutrc_harurobo_lib.git
を実行します。
このライブラリは CMake に対応しています。STM32CubeMX を用いて CMake 向けにプロジェクトを書き出したあと、Import CMake project
からプロジェクトを取り込み、CMakeLists.txt
を以下のように書き換えます。
# ~前略~
# Add linked libraries
target_link_libraries(${CMAKE_PROJECT_NAME}
stm32cubemx
# Add user defined libraries
)
# ~前略~
add_subdirectory(tutrc_harurobo_lib)
# Add linked libraries
target_link_libraries(${CMAKE_PROJECT_NAME}
stm32cubemx
# Add user defined libraries
tutrc_harurobo_lib
)
C/C++ General
-> Paths and Symbols
を開き、Languages から GNU C++
を選択したあと、
- Includes:
プロジェクトルート/tutrc_harurobo_lib/include
- Source Location:
プロジェクトルート/tutrc_harurobo_lib/src
を追加します。
サンプルコードは各クラスのドキュメントに付属しています。また、全てのサンプルコードは CMSIS-RTOS2 で起動可能なスレッド関数として実装しています。
以下はサンプルコードを実行する際の例です。
#include "cmsis_os2.h"
// 以下のコードは別スレッドやmain関数等から呼び出す
osThreadAttr_t thread_attr = {};
thread_attr.stack_size = 1024;
thread_attr.priority = osPriorityNormal;
osThreadNew(example_thread, nullptr, &thread_attr);
MIT License