Таймеры и FreeRTOS на ESP32

ESP32 работает под управлением FreeRTOS, и в дополнение к аппаратным таймерам (hw_timer_t) в нём доступны программные таймеры FreeRTOS. Они позволяют запускать функции по расписанию, управлять периодическими событиями и при этом экономить аппаратные ресурсы.

Что такое софтварные таймеры FreeRTOS

Программные таймеры FreeRTOS создаются и управляются при помощи специальных функций ядра. В отличие от аппаратных таймеров, они не зависят от железа, а работают в контексте задач ОС. Основные особенности:

  • Не используют аппаратные таймерные блоки ESP32 — освобождают ресурсы.
  • Могут быть одноразовыми (one-shot) или периодическими (auto-reload).
  • Выполняют обработчик (callback) в отдельной служебной задаче FreeRTOS.

Основные функции API

  • xTimerCreate() — создание таймера.
  • xTimerStart() — запуск таймера.
  • xTimerStop() — остановка таймера.
  • xTimerDelete() — удаление таймера.

Пример: мигание светодиода через FreeRTOS таймер


#include 

#define LED_PIN 2

// Дескриптор таймера
TimerHandle_t blinkTimer;

// Обработчик таймера
void blinkCallback(TimerHandle_t xTimer) {
  static bool ledState = false;
  digitalWrite(LED_PIN, ledState);
  ledState = !ledState;
}

void setup() {
  pinMode(LED_PIN, OUTPUT);

  // Создаем таймер: имя, период 500 мс, auto-reload = true, ID = 0, callback
  blinkTimer = xTimerCreate("BlinkTimer", pdMS_TO_TICKS(500), pdTRUE, 0, blinkCallback);

  if (blinkTimer != NULL) {
    xTimerStart(blinkTimer, 0); // Запускаем таймер
  }
}

void loop() {
  // Основной цикл пуст — всё делает таймер
}

Что происходит: каждые 500 мс срабатывает callback, и светодиод на GPIO 2 переключает своё состояние.

Сравнение с аппаратными таймерами

Характеристика Аппаратные таймеры (hw_timer_t) Программные таймеры FreeRTOS
Зависимость от железа Работают напрямую с блоками таймеров ESP32 Выполняются в задачах ОС
Точность Высокая, до микросекунд Миллисекундный диапазон, зависит от системного тика
Скорость выполнения ISR — работает очень быстро Задержка на планирование задач
Нагрузка на CPU Минимальная Чуть выше, чем у hw_timer
Удобство Требуется писать обработчик ISR Callback в обычном коде, проще отлаживать

Когда использовать софтварные таймеры

  • Когда точность в микросекундах не критична.
  • Для управления событиями в миллисекундном диапазоне (мигание, обновление интерфейса, периодические задачи).
  • Когда аппаратные таймеры уже заняты.

Заключение

Таймеры FreeRTOS на ESP32 — удобный инструмент для периодических задач. Если вам нужна высокая точность, используйте аппаратные hw_timer_t. Если же важна простота и гибкость — подойдут программные таймеры FreeRTOS.

<< Проекты << Все товары >> Статьи, уроки >>

Написать отзыв

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
LCD Keypad shield для Arduino

LCD Keypad shield для Arduino

Шилд расширения для Arduino с LCD-дисплеем LCD1602 и набором кнопокСоответсвие занятых выводов ..

162.43грн.

Повышающий преобразователь напряжения 0,9...5В в 5В

Повышающий преобразователь напряжения 0,9...5В в 5В

Миниатюрный преобразователь напряжения до 5ВВходное напряжение постоянного тока 0,9 ... 5 ВНа выходе..

33.08грн.

Уроки Arduino видимость переменных для начинающих

Уроки Arduino видимость переменных для начинающих

Переменные в Arduino IDE разделяются на глобальные и локальные. Глобальные переменные дост..

NRF24L01+PA+LNA модуль 2,4 ГГц SMD с разъёмом IPEX, 18×14 мм

NRF24L01+PA+LNA модуль 2,4 ГГц SMD с разъёмом IPEX, 18×14 мм

NRF24L01+PA+LNA модуль 2,4 ГГц (SMD) с разъёмом IPEX (u.FL), 18×14 мм ..

109.98грн.

Датчик влажности и температуры DHT21

Датчик влажности и температуры DHT21

Датчик влажности и температуры DHT21 (AM2301) – точный цифровой сенсор для Arduino и других микрокон..

261.32грн.

Рекомендуемые товары

ESP32 таймеры: Многозадачность с аппаратными таймерами

ESP32 таймеры: Многозадачность с аппаратными таймерами

ESP32 таймеры: Многозадачность с аппаратными таймерами ESP32 — это мощный микроконтроллер с двухъ..

0.00грн.

Измерение времени и точные задержки на ESP32

Измерение времени и точные задержки на ESP32

Измерение времени и точные задержки на ESP32 ESP32 обладает мощной системой аппаратных таймеров, ..

0.00грн.