vTaskDelay(500) даёт паузу в пять секунд вместо полусекунды
В FreeRTOSConfig.h стоит #define configTICK_RATE_HZ 100. Задача опроса датчика:
for (;;) {
read_sensor();
vTaskDelay(500); /* хотим 500 мс */
}
Осциллограф показывает, что датчик опрашивается раз в 5 секунд. Почему?
- Аргумент задаётся в тиках, а не в миллисекундах
- Задачу надолго вытесняют задачи выше приоритетом
- vTaskDelay принимает время в сотых долях секунды
- Системный таймер тактируется от неверного кварца
