Таймери та 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 размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Світлодіод 5мм

Світлодіод 5мм

Світлодіод з діаметром 5мм. LED Максимальний струм 20 мА ..

1.98грн.

SMD світлодіод 0805

SMD світлодіод 0805

SMD світлодіоди видимого діапазону для поверхневого монтажу на плату Типорозмір 0805 Черво..

2.39грн.

Перетворювач рівнів 5В на 3В двонапрямлений 4-канальний

Перетворювач рівнів 5В на 3В двонапрямлений 4-канальний

Перетворювач логічних рівнів з 5 В на 3,3 В та навпаки.Дозволяє перетворити 4 лінії комунікаціїДуже ..

20.09грн.

OLED дисплей 128x64 I2C (0,96")

OLED дисплей 128x64 I2C (0,96")

OLED дисплей 128x64 I2C (0,96") OLED дисплей 128x64 — компактний монохромний екран з діагоналлю 0..

93.06грн.

Таймери Arduino UNO — Частина 1. Вступ

Таймери Arduino UNO — Частина 1. Вступ

Таймери Arduino UNO — Частина 1. Вступ Теорія Що таке таймер у мікроконтролері ATmega3..

Рекомендовані товари

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

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

ESP32 таймери: Багатозадачність з апаратними таймерами ESP32 — це потужний мікроконтролер з двояд..

0.00грн.

Вимірювання часу та точні затримки на ESP32

Вимірювання часу та точні затримки на ESP32

Вимірювання часу та точні затримки на ESP32 ESP32 має потужну систему апаратних таймерів, які доз..

0.00грн.