Timer - программные таймеры в CMSIS-RTOS2
Программные таймеры в среде CMSIS-RTOS2 являются дополнением к универсальным функциям ожидания (osDelay, osDelayUntil). Но в отличии от них, таймер инициирует не выполнение задачи (потока) а выполнение функции, которая называется функцией обратного вызова (callback function). По окончании счета таймера выполняется функция обратного вызова, связанная с этим таймером.
Каждый программный таймер может быть настроен как однократный, так и периодический. Периодический таймер повторяет свою работу до тех пор, пока он не будет удален или остановлен.
Все таймеры можно запустить (started), перезапустить (restarted) или остановить (stopped).
Иллюстрация работы таймера с сайта CMSIS-RTOS2 (ARM).
Структуры
Типы данных
/// \details Timer ID identifies the timer.
typedef void *osTimerId_t;
/// Timer callback function.
typedef void (*osTimerFunc_t) (void *argument);
Перечислимые типы данных
Определяет таймер как однократный (one-shot) или периодический (repeating / periodic)
/// Timer type.
typedef enum {
osTimerOnce = 0, /// One-shot timer.
osTimerPeriodic = 1 /// Repeating timer.
} osTimerType_t;