1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| // Fonction de la tâche exécutée sur le core 0
void tacheSurCore0(void *parametres) {
Serial.print("tacheSurCore0 Cette tâche tourne sur le core ");
Serial.println(xPortGetCoreID());
while (true) { // la tâche tourne de façon infinie.
delay(random(500, 2000));
Serial.println("La tâche 1 est en cours d'exécution...");
}
}
// Fonction de la tâche exécutée sur le core 1
void tacheSurCore1(void *parametres) {
Serial.print("tacheSurCore1 Cette tâche tourne sur le core ");
Serial.println(xPortGetCoreID());
while (true) { // la tâche tourne de façon infinie.
delay(random(500, 1000));
Serial.println("La tâche 2 est en cours d'exécution...");
}
}
void setup() {
Serial.begin(115200);
// Création de la tâche 1 sur le core 0
xTaskCreatePinnedToCore(
tacheSurCore0, // Fonction de tâche
"Tache1", // Nom de la tâche
10000, // Taille de la pile
NULL, // Paramètres de la tâche
1, // Priorité de la tâche
nullptr, // Handle de tâche (ici on ne l'utilise pas)
0 // Core sur lequel la tâche doit être exécutée
);
// Création de la tâche 2 sur le core 1
xTaskCreatePinnedToCore(
tacheSurCore1, // Fonction de tâche
"Tache2", // Nom de la tâche
10000, // Taille de la pile
NULL, // Paramètres de la tâche
1, // Priorité de la tâche
nullptr, // Handle de tâche (ici on ne l'utilise pas)
1 // Core sur lequel la tâche doit être exécutée
);
}
void loop() {
// La loop reste vide car les tâches tournent indépendamment et sont gérées par FreeRTOS
} |
Partager