Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

STM32F103系ボードでFreeRTOSをためす

FreeRTOSはその名の通り、フリーのリアルタイムOSです。

shuzo-kino.hateblo.jp
前回導入したボードコンフィグArduino-STM32には、これの動作サンプルがついてます。
Arduino IDEの環境だけで実験できるのは喜楽でいいですね。

Lチカさせるだけなら、ここまでの単純さです。
これだと何のありがたみもありませんが、
重要な処理と、まぁ落としても良い処理を同じループでぶん回して不具合がある場合なんかは有効ですね。

//#include <wirish/wirish.h>
//#include "libraries/FreeRTOS/MapleFreeRTOS.h"
#include <MapleFreeRTOS821.h>

static void vLEDFlashTask(void *pvParameters) {
    for (;;) {
        vTaskDelay(1000);
        digitalWrite(PIC13, HIGH);
        vTaskDelay(50);
        digitalWrite(PC13, LOW);
    }
}

void setup() {
    // initialize the digital pin as an output:
    pinMode(PC13, OUTPUT);

    xTaskCreate(vLEDFlashTask,
                "Task1",
                configMINIMAL_STACK_SIZE,
                NULL,
                tskIDLE_PRIORITY + 2,
                NULL);
    vTaskStartScheduler();
}

void loop() {
    // Insert background code here
}

注意点としてライセンスがGPLである事が挙げられます。
商用等々で公開したくない場合は兄弟プロジェクトのOpenRTOSを使う必要があるようです。