Таймеры и 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 разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Спортивное табло таймер своими руками

Спортивное табло таймер своими руками

Постановка задачи Задачей проекта является изготовление спортивного таймера для мини-футбольног..

Адаптер для радио модуля NRF24L01

Адаптер для радио модуля NRF24L01

Модуль, облегчающий подключение радио приемо-передатчика NRF24L01 к любительским контроллерамНа..

26.73грн.

Мини кнопка SMD 6 x 6 x 5 мм

Мини кнопка SMD 6 x 6 x 5 мм

Миниатюрная кнопка с SMD выводамиРазмеры 6 x 6 x 5 мм..

1.05грн.

Контроллер заряда аккумулятора 3,7В или 4,2В 1А

Контроллер заряда аккумулятора 3,7В или 4,2В 1А

Плата для зарядки литиумных аккумуляторов 3,6 - 4,2В и запитки его нагрузки.Зарядка производится чер..

26.20грн.

Силовой MOSFET транзистор IRF520 N-канальный

Силовой MOSFET транзистор IRF520 N-канальный

MOSFET транзистор 3-го поколенияИспользуется для скоростной коммутации мощных исполнительных механиз..

28.43грн.

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

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

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

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

0.00грн.

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

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

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

0.00грн.