Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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を使う必要があるようです。