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

Какие виды датчиков можно подключить к Arduino для измерения параметров окружающей среды

Какие виды датчиков можно подключить к Arduino для измерения параметров окружающей среды Ar..

Подключение кнопки к Arduino

Подключение кнопки к Arduino

Изначально собирался написать статью о фильтрации дребезга кнопки, подключенной к контроллеру Arduin..

Датчик напряжения сети 220В

Датчик напряжения сети 220В

Гальванически изолированный датчик наличия напряжения в сети 220ВНапряжение питания логики 3 ... 5 В..

106.67грн.

SIM800L GSM модуль

SIM800L GSM модуль

SIM800L GSM модуль SIM800L — компактный GSM/GPRS модуль, построенный на специализированной микрос..

224.19грн.

Набор перемычек (мама-папа) 40шт 20см

Набор перемычек (мама-папа) 40шт 20см

Набор соединительных проводов для соединения плат контроллера с периферией без пайки. Подходят под с..

88.83грн.

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

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

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

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

0.00грн.

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

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

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

0.00грн.