osTimerNew() - создание программного таймера в CMSIS-RTOS2
Создает однократный или периодический программный таймер (Timer) и связывает его с функцией обратного вызова (callback function) с аргументом.
osTimerId_t osTimerNew (osTimerFunc_t func,
osTimerType_t type,
void *argument,
const osTimerAttr_t *attr)
Параметры
func
function pointer to callback function
Указатель на функцию обратного вызова (callback function).
/// Timer callback function.
typedef void (*osTimerFunc_t) (void *argument);
type
osTimerOnce for one-shot or osTimerPeriodic for periodic behavior
Одно из значений:
- osTimerOnce - для однократного вызова таймера;
- osTimerPeriodic - для периодической работы таймера;
/// Timer type.
typedef enum {
osTimerOnce = 0, /// One-shot timer.
osTimerPeriodic = 1 /// Repeating timer.
} osTimerType_t;
*argument
argument to the timer callback function
Указатель на аргумент функции обратного вызова (callback function).
*attr
message queue attributes; NULL: default values
Указатель на структуру, содержащую атрибуты (свойства) создаваемого программного таймера. Если NULL - устанавливаются значения по умолчанию.
/// Attributes structure for timer.
typedef struct {
const char *name; /// name of the timer
uint32_t attr_bits; /// attribute bits
void *cb_mem; /// memory for control block
uint32_t cb_size; /// size of provided memory for control block
} osTimerAttr_t;
Возвращаемое значение
osTimerId_t
timer ID for reference by other functions or NULL in case of error
Указатель на идентификатор программного таймера (тип значения - osTimerId_t / указатель на void) или NULL в случае ошибки.
/// \details Timer ID identifies the timer.
typedef void *osTimerId_t;
Описание
Созданный таймер находится в остановленном состоянии, пока не будет запущен с помощью функции osTimerStart().
Функцию osTimerNew() можно безопасно вызвать до запуска ядра RTOS osKernelStart(), но не до ее инициализации osKernelInitialize().
Функция osTimerNew() не может быть вызвана из процедуры обработки прерывания (ISR - Interrupt Service Routines).