Компоненты и технологии • №2 '2011 компоненты



Pdf көрінісі
бет112/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   108   109   110   111   112   113   114   115   ...   129
Kurniz

Литература
1. Курниц А. FreeRTOS — операционная система для микроконтроллеров //
Компоненты и технологии. 2011. № 2–8.
2. 
www.freertos.org
3. 
http://www.ee.ic.ac.uk/t.clarke/rtos/lectures/RTOSlec2x2bw.pdf
рис. 7. Работа модифицированной учебной программы № 2


93
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 10 '2011
www.kite.ru
компоненты
микроконтроллеры
Андрей Курниц
kurnits@stim.by
Что представляет собой 
программный таймер?
В версии FreeRTOS V7.0.0 по сравне-
нию с предыдущими версиями появилось 
существенное нововведение — встроен-
ная реализация программных таймеров. 
Программный таймер (далее по тексту — 
таймер) во FreeRTOS — это инструмент, 
позволяющий организовать выполнение 
подпрограммы в точно заданные моменты 
времени.
Часть программы, выполнение которой 
инициирует таймер, в программе представ-
лена в виде функции языка Си, которую 
в дальнейшем мы будем называть функцией 
таймера. Функция таймера является функ-
цией обратного вызова (callback function). 
Механизм программных таймеров обеспечи-
вает вызов функции таймера в нужные мо-
менты времени.
Программные таймеры предоставляют 
более удобный способ привязки выпол-
нения программы к заданным моментам 
времени, чем использование API-функций 
vTaskDelay() и vTaskDelayUntil(), которые 
переводят задачу в блокированное состояние 
на заданный промежуток времени [1, № 4].
Принцип работы
программного таймера
Как и прочие объекты ядра FreeRTOS, 
программный таймер должен быть создан 
до первого своего использования в програм-
ме. При создании таймера с ним связывается 
функция таймера, выполнение которой он 
будет инициировать.
Таймер может находиться в двух состоя-
ниях: пассивном (Dorman state) и активном 
(Active state).
Пассивное состояние таймера характе-
ризуется тем, что таймер в данный момент 
не отсчитывает временной интервал. Таймер, 
находящийся в пассивном состоянии, никог-
да не вызовет свою функцию. Сразу после 
создания таймер находится в пассивном со-
стоянии.
Таймер переходит в активное состояние по-
сле того, как к нему в явном виде применили 
операцию запуска таймера. Таймер, находя-
щийся в активном состоянии, рано или поздно 
вызовет свою функцию таймера. Промежуток 
времени от момента запуска таймера до мо-
мента, когда он автоматически вызовет свою 
функцию, называется периодом работы тай-
мера. Период таймера задается в момент его 
создания, но может быть изменен в ходе вы-
полнения программы. Момент времени, когда 
таймер вызывает свою функцию, будем назы-
вать моментом срабатывания таймера.
Рассматривая таймер в упрощенном виде, 
можно сказать, что к таймеру, находящему-
ся в пассивном состоянии, применяют опе-
рацию запуска, в результате которой таймер 
переходит из пассивного состояния в актив-
ное и начинает отсчитывать время. Когда 
с момента запуска таймера пройдет проме-
жуток времени, равный периоду работы тай-
мера, то таймер сработает и автоматически 
вызовет свою функцию таймера (рис. 1).
К таймеру могут быть применены следую-
щие операции:
1. Создание таймера — приводит к выде-
лению памяти под служебную структуру 
управления таймером, связывает таймер 
с его функцией, которая будет вызываться 
при срабатывании таймера, переводит тай-
мер в пассивное состояние.
2. Запуск — переводит таймер из пассивного 
состояния в активное, таймер начинает от-
счет времени.
3. Останов — переводит таймер из активного 
состояния в пассивное, таймер прекраща-
ет отсчет времени, функция таймера так 
и не вызывается.
4. Сброс — приводит к тому, что таймер на-
чинает отсчет временного интервала с на-
чала. Подробнее об этой операции расска-
жем позже.
5. Изменение периода работы таймера.
6. Удаление таймера — приводит к освобож-
дению памяти, занимаемой служебной 
структурой управления таймером.


Достарыңызбен бөлісу:
1   ...   108   109   110   111   112   113   114   115   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет