В настоящее время мы учимся программировать микроконтроллеры AVR (только стандарт Ansi C89). Часть включенных драйверов - это заголовок, который касается планирования, то есть выполнения задач с разной скоростью. Мой вопрос связан с цитатой из документации:
«Каждая задача должна поддерживать свое собственное состояние, используя статические локальные переменные».
Что это означает на самом деле? Кажется, они передают функции void *
для поддержания состояния, но затем не используют его?
Глядя на код в файле, я понимаю, что они имеют в виду:
{.func = led_flash_task, .period = TASK_RATE / LED_TASK_RATE, .data = 0}
/* Last term the pointer term */
Есть функция, которая работает с указанными выше параметрами в массиве, однако действует только как планировщик. Тогда функция led_flash_task
будет
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 */
}
И из заголовка
#define __unused__ __attribute__ ((unused))
И передача void * данных
предназначена для поддержания состояния задачи? Что имеется в виду?
Благодарю за помощь