Вступить в клуб →
лёгкаявопросFreeRTOS: задачи, очереди и синхронизация

vTaskDelay(500) даёт паузу в пять секунд вместо полусекунды

В FreeRTOSConfig.h стоит #define configTICK_RATE_HZ 100. Задача опроса датчика:

for (;;) {
    read_sensor();
    vTaskDelay(500);   /* хотим 500 мс */
}

Осциллограф показывает, что датчик опрашивается раз в 5 секунд. Почему?

  • Аргумент задаётся в тиках, а не в миллисекундах
  • Задачу надолго вытесняют задачи выше приоритетом
  • vTaskDelay принимает время в сотых долях секунды
  • Системный таймер тактируется от неверного кварца

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела