Изменение периода работы таймера
Независимо от того, в каком состоянии
в данный момент находится таймер: в ак-
тивном или в пассивном, период его работы
можно изменить посредством API-функции
xTimerChangePeriod(). Ее прототип:
portBASE_TYPE xTimerChangePeriod( xTimerHandle xTimer,
portTickType xNewPeriod, portTickType xBlockTime );
Аргументы и возвращаемое значение:
1. xTimer — дескриптор таймера, полу-
ченный при его создании API-функцией
xTimerCreate().
2. xNewPeriod — новый период работы тай-
мера, задается в системных квантах.
3. xBlockTime — определяет время тайм-
аута — максимальное время нахождения
вызывающей xTimerChangePeriod() задачи
в блокированном состоянии, если очередь
команд полностью заполнена и нет воз-
можности поместить в нее команду об из-
менении периода таймера.
4. Возвращаемое значение — может прини-
мать два значения:
pdFAIL
•
— означает, что команда об из-
менении периода таймера так и не была
помещена в очередь команд, и время
тайм-аута истекло.
pdPASS
•
— означает, что команда об из-
менении периода успешно помещена
в очередь команд.
API-функция xTimerChangePeriod() предна-
значена для вызова из тела задачи или функ-
ции таймера. Существует версия этой API-
функции, предназначенная для вызова из обра-
ботчика прерывания, о ней будет сказано ниже.
Получение текущего состояния таймера
Для того чтобы узнать, в каком состоя-
нии — в активном или в пассивном — в дан-
ный момент находится таймер, служит API-
функция xTimerIsTimerActive(). Ее прототип:
portBASE_TYPE xTimerIsTimerActive( xTimerHandle xTimer );
Аргументом API-функции является де-
скриптор таймера, состояние которого необ-
ходимо выяснить. xTimerIsTimerActive() мо-
жет возвращать два значения:
Достарыңызбен бөлісу: |