Следующий шаг к структурированию - Планировщик на таймере (Timer-Based Scheduler). Это эволюция суперлупа, где системный таймер периодически генерирует прерывание (тик), которое проверяет, каким задачам пора выполняться, и выставляет флаги. Основной цикл проверяет эти флаги и запускает соответствующие задачи. volatile uint32_t tick_count = 0; #define TASK1_PERIOD 100 // Выполнять каждые 100 мс #define TASK2_PERIOD 500 // Выполнять каждые 500 мс void systick_isr(void) { tick_count++; } int main(void) { uint32_t last_task1 = 0, last_task2 = 0; setup_timer(); enable_interrupts(); while(1) { uint32_t now = tick_count; // Задача 1: каждые 100 тиков if((now - last_task1) >= TASK1_PERIOD) { last_task1 = now; read_sensors(); } // Задача 2: каждые 500 тиков if((now - last_task2) >= TASK2_PERIOD) { last_task2 = now; update_display(); } idle_task(); } } Как это работает на практике? 🔴Системный таймер генерирует регулярные прерывания (например, каждую 1 мс - системный тик). 🔴Каждый тик и