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



Pdf көрінісі
бет120/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   116   117   118   119   120   121   122   123   ...   129
Kurniz

работа с таймерами
Как и для объектов ядра, таких как зада-
чи, сопрограммы, очереди и др., для работы 
с программным таймером служит дескрип-
тор (handle) таймера.
Дескриптор таймера представляет собой 
переменную типа xTimerHandle. При соз-
дании таймера FreeRTOS автоматически на-
значает ему дескриптор, который далее ис-
пользуется в программе для операций с этим 
таймером.
Функция таймера автоматически получает 
дескриптор таймера в качестве своего аргу-
мента. Для выполнения операций с тайме-
ром внутри функции этого таймера следует 
использовать дескриптор таймера, получен-
ный в виде аргумента.
Дескриптор таймера однозначно опреде-
ляет таймер в программе. Тем не менее при 
создании таймера ему можно назначить 
идентификатор. Идентификатор представ-
ляет собой указатель типа void*, что под-
разумевает использование его как указате-
ля на любой тип данных. Идентификатор 
таймера следует использовать лишь тогда, 
когда необходимо связать таймер с произ-
вольным параметром. Например, можно 
создать несколько таймеров с общей для 
них всех функцией таймера, а идентифика-
тор использовать внутри функции таймера 
для определения того, срабатывание какого 
конкретно таймера привело к вызову этой 
функции. Такое использование идентифи-
катора будет продемонстрировано ниже 
в учебной программе.


97
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 10 '2011
www.kite.ru
компоненты
микроконтроллеры
Создание/удаление таймера
Для того чтобы создать программный 
таймер, следует вызвать API-функцию 
xTimerCreate(). Ее прототип:
xTimerHandle xTimerCreate( const signed char *pcTimerName, 
portTickType xTimerPeriod, unsigned portBASE_TYPE uxAutoReload, 
void * pvTimerID, tmrTIMER_CALLBACK pxCallbackFunction );
Аргументы и возвращаемое значение:
1. pcTimerName — нультерминальная (закан-
чивающаяся нулем) cтрока, определяющая 
имя таймера. Ядром не используется, а слу-
жит лишь для наглядности и при отладке.
2. xTimerPeriod — период работы таймера. 
Задается в системных квантах времени, 
для задания в миллисекундах следует ис-
пользовать макроопределение portTICK_


Достарыңызбен бөлісу:
1   ...   116   117   118   119   120   121   122   123   ...   129




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

    Басты бет