4.2 Software timers — actions périodiques sans tâche dédiée

3. 4.2 Software timers — actions périodiques sans tâche dédiée

Un software timer exécute une callback dans le contexte du timer daemon task (priorité configurable). Pas de pile dédiée, pas de tâche dans vTaskList.

#include "freertos/timers.h"

#define LED_PIN GPIO_NUM_2

static void heartbeat_callback(TimerHandle_t xTimer)
{
    static uint8_t led_state = 0;
    gpio_set_level(LED_PIN, led_state ^= 1);
}

void init_timers(void)
{
    TimerHandle_t xHeartbeatTimer = xTimerCreate(
        "heartbeat",            // nom (debug)
        pdMS_TO_TICKS(500),     // période
        pdTRUE,                 // auto-reload (répétitif)
        NULL,                   // timer ID (NULL si inutile)
        heartbeat_callback
    );

    if (xHeartbeatTimer != NULL) {
        xTimerStart(xHeartbeatTimer, 0);
    }
}

Contrainte critique : ne jamais bloquer dans une callback timer : - Pas de vTaskDelay - Pas de xQueueReceive avec timeout > 0 - Pas de xSemaphoreTake avec timeout > 0

Si une opération longue est nécessaire, envoyer un signal à une tâche dédiée depuis la callback.

Se connecter pour suivre votre progression.