Espressif IDF – Timer

Last Updated on 4. Oktober 2026 by sfambachLink-Status: OK

Ein beliebtes Beispiel in der Arduino Umgebung ist Blink. Hier wird eine LED mit einer kurzen Pause an und aus geschaltet. Zu Gpio Aktionen kommen wir im nächsten Kapitel, um das Blinken kümmern wir uns hier. Auch in der Arduino Umgebung wird immer geraten, Codeunterbrechungen mit Delay zu vermeiden. Dort gibt es einige Konstrukte mit selbst gestrickten Timern oder ganzen Bibliotheken. In der IDF gibt es als Bestandteil des RTOS Timerfunktionen, diese ermöglichen Funktionsaufrufe zu terminieren. Es gibt zwei Optionen: periodisch und einmalig.

Was benötigt man für einen IDF Timer?

Eine Funktion, welche die folgende Signatur haben muss:

static void timer_callback(void* arg){
}

Die Timerargumente, welche einen Pointer auf die Timerfunktion (s.o.) und einen frei wählbaren Namen enthalten.

 const esp_timer_create_args_t periodic_timer_args = {
                        /* Pointer auf die Funktion */
                        .callback = &timer_callback,
                        /* Der name ist optional*/
                        .name = "periodic"
    };

Jetzt noch den Timer erstellen.

esp_timer_handle_t periodic_timer;
ESP_ERROR_CHECK(
  esp_timer_create(&periodic_timer_args, &periodic_timer)
);  

Dann noch entscheiden, ob dieser periodisch oder nur einmal gestartet werden soll. Der zweite Parameter ist die Auslösezeit in Mikrosekunden (Millisekunden * 1000)

//** periodisch
ESP_ERROR_CHECK(
  esp_timer_start_periodic(periodic_timer, 5000000)
);
        
//** Nur einmal
ESP_ERROR_CHECK(
  esp_timer_start_single(periodic_timer, 5000000)
);

Im Beispiel wird die periodische Ausgabe des Textes aus der Übung 1 alle 5 Sekunden realisiert.

DatumÄnderungAutor
04.10.2026Rechtschreibung korrigiert: Tippfehler, Kommas, Grammatiksfambach
03.10.2026Log-Liste eingefügtsfambach
07.01.2021Beitrag erstelltsfambach
Logbuch

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert