You are here

Программные таймеры во FreeRTOS: введение

Перевод может содержать ошибки. Читайте первоисточник.

Назад: [Getting Started] Вверх: [Getting Started] Вперёд: [Getting Started]

На этой странице:

НЕ на этой странице:


Коротко о таймерах

Программный таймер (или просто "таймер") позволяет выполнять функцию в установленное время в будущем. Функция, запускаемая таймером, называется функцией обратного вызова таймера. Время между запуском таймера и вызовом функции обратного вызова называется периодом таймера. Проще говоря, функция обратного вызова таймера выполняется, когда истекает период таймера.

Обратите внимание: программный таймер должен быть явно создан, прежде чем его можно будет использовать.

Вопросы эффективности реализации программного таймера

Функциональность программного таймера легко реализовать, но сложно сделать это эффективно. Реализация во FreeRTOS не запускает функцию обратного вызова таймера в контексте прерывания, не использует процессорное время, если период таймера фактически не истёк, не добавляет никаких накладных расходов к прерыванию тиков, и не просматривает структуры списка ссылок пока прерывания запрещены.

Сервисная задача таймера в основном использует существующие возможности FreeRTOS, позволяя с минимальным влиянием на размер исполняемого двоичного файла добавлять в приложение функционал таймеров.

Важная информация о написании функций обратного вызова таймера

Функции обратного вызова таймера выполняются в контексте сервисной задачи таймера. Поэтому важно, чтобы функции обратного вызова таймера никогда не пытались заблокироваться (перейти в заблокированное состояние). Например, функции обратного вызова таймера не должны вызывать vTaskDelay(), vTaskDelayUntil() или указывать не нулевое время блокировки при доступе к очередям или к семафорам.

Hobby's category: