Skocz do zawartości

Czym są: RTOS, wielozadaniowość, taski?


Pomocna odpowiedź

Jako że @_LM_ stwierdził że to "nie dla RTOS-a" - wrapper do tworzenia tasków w Arduino:

plik "ardutask.h"

#ifndef ARDUTASK_H
#define ARDUTASK_H

extern void createArduinoTask(void (*tsetup)(), void (*tloop)());

#endif

plik "ardutask.cpp":

#include <Arduino.h>

struct arduTaskF {
    char name[16];
    void (*tsetup)();
    void (*tloop)();
};
static uint8_t _taskCntr =0;

static void _arduTask(void *param)
{
    struct arduTaskF *af=(struct arduTaskF *)param;
    af->tsetup();
    for (;;) {
        af->tloop();
        yield();
    }
}

void createArduinoTask(void (*tsetup)(), void (*tloop)())
{
    TaskHandle_t tHandle;
    struct arduTaskF *af=(struct arduTaskF *) malloc(sizeof(*af));
    af->tsetup=tsetup;
    af->tloop=tloop;
    sprintf(af->name,"_ardu_%d", _taskCntr++);
    xTaskCreate(_arduTask, af->name, 16384, (void *)af,
        uxTaskPriorityGet(NULL),&tHandle);
}

 

  • Lubię! 2

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...