Project

General

Profile

Actions

UsingFreeRtos » History » Revision 4

« Previous | Revision 4/9 (diff) | Next »
mole lord, 09/06/2020 12:53 PM


UsingFreeRtos

小規模なプログラムならRTOSなしで組んだほうがいい。私もそんなことを考えていた時期がありました。

しかし、仕様というのは後から追加されるものであり、割り込みに対処しながらバックグラウンドで計算量の多い処理をする必要が生じて、自分でタスクスイッチ(出続けるオシッコを無理やり止めて隣の便器に移る)処理を書くことになるという経験から、ベアメタル(OS抜き)で作るのはやめました。

最初にプログラムを書く人間が、その製品の一生を左右します。最初からスパゲッティだと死ぬまでスパゲッティです。
RTOSを使いましょう。


ソースコードに関しては、 https://ashidan.myhome.cx/gitbucket/git/molelord/stm32.git の SHA-1: 999851cae241ef1bd3842b80bb627c7f450c285d 移行を参考にしてください。

CubeMXでFreeRTOSを使う設定をして、ビルド、実行

  1. CubeMX上で、Middleware - FREERTOS をクリックします。
  2. InterfaceをDisableから CMSIS_V1 に変えます
    • CMSISは使うつもりがないので、V1で十分です。
  3. Config parameters - MPU/FPU - ENABLE_FPU を Enabled に変えます
    • 複数のタスクで浮動小数点演算を行えるようにするのが意図です
  4. Config parameters - Kernel settings - ENABLE_BACKWORD_COMPATIBILITY を Disabled に変えます
    • これから新規に作るので、過去との互換性は捨てても大丈夫
  5. Config parameters - Kernel settings - RECORD_STACK_HIGH_ADDRESS を Enabled に変えます
  6. Config parameters - Software timer definitions - USE_TIMERS を Enabledにします
    • LEDチカチカに使います
  7. System Core - SYS - Timebase Source を SysTick から TIM6 に変えます
    • Timebase SourceにはHALが使うタイマを指定します。FreeRTOSはSysTickに依存しているので、HALに代わりをあてがうことになります。
  8. DevEnv にある手順でEclipseへの取り込み、ビルドを行い、実機に書き込んで、異常が起きない(HardFaultで停止しない)ことを確認します

LEDチカチカする

上記手順だけだと何も起こらずつまらないので、LEDチカチカをさせます。


累計表示回数:129

Updated by mole lord 3 months ago · 4 revisions