osTimerStart() - запускает или перезапускает программный таймер в CMSIS-RTOS2

Запускает или перезапускает указанный программный таймер с отсчетом определённого количества тактов системного таймера (тиков).


osStatus_t  osTimerStart  (osTimerId_t  timer_id,
                           uint32_t     ticks)

Параметры

timer_id
timer ID obtained by osTimerNew()
Идентификатор программного таймера, созданного функцией osTimerNew().
/// \details Timer ID identifies the timer.
typedef  void  *osTimerId_t;
ticks
time ticks value of the timer
Количество тиков для отсчета таймером.



Возвращаемое значение

osStatus_t
status code that indicates the execution status of the function
Код состояния как индикатор выполнения функции.

Возможные возвращаемые значения:

 osOK :  указанный таймер запущен или перезапущен без ошибок;

 osErrorISR :  функция osTimerStart() не может быть вызвана из процедуры обработки прерывания (ISR).

 osErrorParameter :  Количество тиков в аргументе функции равно нулю или имеет недопустимое значение;

 osErrorResource :  таймер в недопустимом состоянии, не хватает памяти или размера стека;

 osErrorSafetyClass :  класс безопасности вызывающей задачи ниже, чем класс безопасности указанного таймера.




Описание

Таймер после создания находится в остановленном состоянии, пока не будет запущен с помощью функции osTimerStart().

Функция osTimerStart() не может быть вызвана из процедуры обработки прерывания (ISR - Interrupt Service Routines).

Однократный (one-shot) таймер запускается функцией osTimerStart(). Функция обратного вызова (callback function) выполняется однократно и после этого таймер переходит в режим "остановлен" самостоятельно, без использования функции osTimerStop(). Для последующего однократного запуска таймера необходимо снова вызвать функцию osTimerStart().

Периодический (repeating / periodic) таймер запускается функцией osTimerStart(). После выполнения функции обратного вызова (callback function), таймер автоматически перезапускается снова. Для остановки таймера необходимо вызвать функцию osTimerStop(). Периодический таймер во время работы можно перезапускать функцией osTimerStart(), при этом счет количества тиков начинается заново, согласно новому аргументу ticks.