osTimerStart() - запускает или перезапускает программный таймер в CMSIS-RTOS2
Запускает или перезапускает указанный программный таймер с отсчетом определённого количества тактов системного таймера (тиков).
osStatus_t osTimerStart (osTimerId_t timer_id,
uint32_t ticks)
Параметры
/// \details Timer ID identifies the timer.
typedef void *osTimerId_t;
Возвращаемое значение
Возможные возвращаемые значения:
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.