FreeRTOSを動かしてみる

STM32CubeIDEのRTOSはFreeRTOSと系列は共通でもCMSISでラップされているので、APIは違いがあるようですが、RTOS使うのもCube32MXで設定できるので使う上ではそれほどの違いはない

https://embeddedthere.com/getting-started-with-freertos-in-stm32-example-code-included/

が分かりやすいのでこれを参考にした、ただしRTOSといってもタスクを起動とかはしてなくて最初に二つのタスクを起動したら永久に動き続けるだけ

<動作環境>

・M4 MacBook:CubeIDEの1系ならちゃんと動くから

・CubeIDE:1.19.0

・STM32F401re

<手順>

解説中では言及されてませんが、ビルドする時に設定が必要でした、

ビルドするとポップアップで確認メッセージが出てくるので、USE_NEWLIB_REENTRANT(thread safeにするためらしい、その分多少のメモリ増加はするけど、シングルタスク以外はenableにすべきなんだろう)をEnabledにしました

また目で見て簡単にわかるように、PB5側はPA5(つまりオンボードLED)にしています、ソースコードは以下に修正しています

待ちでosDelayを使う理由は、他のタスクへの実行権限以上をできるようにするため、HAL_Delayは単なるアイドリング状態、つまりMCUは動き続ける、だから無駄にリソース消費する

オシロでPB4とPA5の波形を見ると、ほぼ設定した時間でトグルされているのが分かります、普通はタスクが独立してフリーに動作することはほぼないので、次はタスクを待ち状態から起動させてみます

 

admin

“FreeRTOSを動かしてみる” への1件の返信

コメントは受け付けていません。