Obecnie uczymy się programować mikrokontrolery AVR (tylko standard Ansi C89). Część dołączonych sterowników to nagłówek, który zajmuje się planowaniem, tj. Uruchamianiem zadań o różnych stawkach. Moje pytanie jest zrobić z cytatem z dokumentacją: „Każde zadanie musi utrzymać swój stan, za pomocą statycznych lokalnych zmienne”Pustka * używana do utrzymywania stanu ... (programowanie C)
Co to naprawdę oznacza? Wydaje się, że przekazują one funkcję do utrzymywania stanu, ale potem jej nie używają?
Patrząc na kod w pliku wnoszę to co one oznaczają:
{.func = led_flash_task, .period = TASK_RATE/LED_TASK_RATE, .data = 0}
/* Last term the pointer term */
Jest to funkcja, która biegnie z powyższych parametrów w tablicy jednak, że działa tylko jako planisty. Następnie funkcja led_flash_task
jest
static void led_flash_task (__unused__ void *data)
{
static uint8_t state = 0;
led_set (LED1, state); /*Not reall important what this task is */
state = !state; /*Turn the LED on or off */
}
I z nagłówka
#define __unused__ __attribute__ ((unused))
a przejazdem void *data
jest przeznaczona do utrzymania stanu zadania? Co to oznacza?
podziękowaniem za pomoc
+1 za wzmiankę o bezpieczeństwie wątków. Biorąc pod uwagę tę konfigurację i wielowątkowy system operacyjny na uC, umieściłbym na górze masywny baner wszystkich takich modułów: "ZASILA DANE STATYCZNE PAŃSTWA - NIE POWINNY BYĆ WYWOŁANE Z WIELU NICI". –