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

Держатель для батареек 3хAA

Бокс для трёх пальчиковых батареек типа ААОбщее напряжение на проводах бокса получится 4,5 В..

31.00грн.

Светодиодная матрица 8х8 с управляющим контроллером MAX7219

Светодиодная матрица 8х8 с управляющим контроллером MAX7219

Готовый блок светодиодной матрицы 8х8 с поддержкой каскадного включения нескольких идентичных модуле..

87.37грн.

Радиатор 25х23х16мм

Радиатор 25х23х16мм

Радиатор алюминиевый для транзисторов, симисторов ... с установкой на печатную платуОкрашенный в чер..

17.24грн.

Модуль стабилизатора напряжения 3,3 В

Модуль стабилизатора напряжения 3,3 В

Модуль предназначен для питания различных электронных устройств, модулей, работающих на напряжении 3..

18.61грн.

Разработка печатных плат под заказ — профессиональное проектирование PCB для бизнеса

Разработка печатных плат под заказ — профессиональное проектирование PCB для бизнеса

Разработка печатных плат под заказ — профессиональное проектирование PCB для бизнеса Разработка..

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

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

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

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

0.00грн.

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

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

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

0.00грн.