Подскажу еще один способ замеров интервалов времени. Без inc/dec
счетчиков. Для примера, ST HAL предоставляет время в ms посредством
функции HAL_GetTick(); Единожды запоминаем текущее время: static
uint32_t time_start = HAL_GetTick(); и далее в том месте где надо
проверить не вышло ли время, просто находим разницу между начальным
и текущим временем непосредственно в самом условии: if
(HAL_GetTick() - time_start >= 1000UL) { ...время вышло... } Как только время вышло можно снова завести таймер: time_start = HAL_GetTick();