You are here

Задача службы/демона таймера и очередь команд таймера

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

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

См. также: "Функция-ловушка запуска задачи демона RTOS".

Задача службы/демона таймера и очередь команд таймера

Функциональность таймера дополнительная, и не является частью ядра FreeRTOS ядра (о,мамамия). Вместо этого функциональность таймера добавлена задачей службы (или демона) таймера. Это звиздец. Пока не русифицировал, оставляю оригинал: Timer functionality is optional, and not part of the core FreeRTOS kernel. It is instead provided by a timer service (or daemon) task.

FreeRTOS предоставляет набор функций API для работы с таймерами. Многие из этих функций используют стандартную очередь FreeRTOS для отправки команд в служебную задачу таймера. Очередь, используемая для этого называется "очередь команд таймера". Эта очередь является частной для реализации таймера FreeRTOS, и не доступна напрямую.

Рисунок ниже демонстрирует этот сценарий. Код в левой части представляет функцию в пользовательском приложении, и вызывается из задачи, которая создана как часть некоторого пользовательского приложения. Код в правой части представляет реализацию служебной задачи таймера. Очередь команд таймера является связью между задачей приложения и служебной задачей таймера. В приведённом случае функция API xTimerReset() вызывается из кода приложения. В результате команда сброса будет передана в очередь команд таймера для обработки служебной задачей таймера. В коде приложения только вызывается функция API xTimerReset() - т.е. нет (и не может быть) прямого обращения к очереди команд таймера.

RTOS timer task and timer command queue
Контекст кода приложения, API таймера FreeRTOS, очередь команд таймера, задача обслуживания таймера.

 

Hobby's category: