В настоящее время мы учимся программировать микроконтроллеры 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 *data
предназначено для поддержания состояния задачи? Что подразумевается под этим?
Спасибо за помощь