ESP32 gptimer_handle_t

OP #7828617

Hallo Leute,

ich habe hier im main.c einen Timer laufen.

Wie kann ich das gptimer_handle_t so anlegen, dass ich den Timer via global.h aus anderen .c auslesen kann?

1
#include "global.h"
2
#include "driver/gptimer.h"
3

4
gptimer_handle_t gptimer = NULL;
5

6
gptimer_config_t timer_config = 
7
{
8
    .clk_src = GPTIMER_CLK_SRC_DEFAULT,
9
    .direction = GPTIMER_COUNT_UP,
10
    .resolution_hz = 65573,
11
};
12

13
void get_timmer_task() 
14
{
15
    uint64_t count;
16
    while(1) 
17
    {
18
ESP_ERROR_CHECK(gptimer_get_raw_count(gptimer, &count));
19
        printf("%lld\n", count);
20
     vTaskDelay(1000 / portTICK_PERIOD_MS); 
21
    }
22

23
vTaskDelete(NULL);        
24
}
25

26
void app_main(void)
27
{
28
    ESP_ERROR_CHECK(gptimer_new_timer(&timer_config, &gptimer));
29
    ESP_ERROR_CHECK(gptimer_enable(gptimer));
30
    ESP_ERROR_CHECK(gptimer_start(gptimer));
31
xTaskCreatePinnedToCore(*get_timmer_task,"get_timmer_task",2048,NULL,1,NULL,1);
32
}
#7829944

gptimer_handle_t ist doch nur der Typ. Du willst gptimer woanders nutzen? Klassischerweise packst du dann die Deklaration nach globals.h und machst noch n extern davor.

Aber: da du offenbar ein RTOS nutzt würde ich zwingend empfehlen, herauszufinden, wie dort der empfohlene Weg ist - denn du kannst so ne Menge kaputt machen, UB etc erzeugen. Die timer Zugriffe sind garantiert nicht threadsicher. Ziel sollte sein, globals zu reduzieren.

Wie wäre es mit einer Queue?

#7830112

Vincent H. schrieb:

Jan K. schrieb:

Die timer Zugriffe sind garantiert nicht threadsicher.

Oder doch: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/gptimer.html#thread-safety

Upsi. In der Tat - bin ich nicht von ausgegangen und war zu faul zum Doku gucken.

@Topic Da hilft leider nur C lernen: https://www.geeksforgeeks.org/understanding-extern-keyword-in-c/

Full ack.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über ein Jahr alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.