  | 
Приклад скінченного автомата,  
який визначає чи двійкове число  
має непарну кількість 0.  
(c) Wiki | 
Чим простіший код, тим краще. Код, де пінами ECHO та TRIG 
керують окремі таймери відносно простий. Однак, з одного боку, таймери -- ресурс цінний
 та обмежений. На STM32F100, котрим обладнана наша плата, таймерів, 
здатних генерувати PWM -- д
есяток, але вони сильно відрізняються за можливостями. Для реальних пристроїв це не так вже і багато! З іншого боку, 
частина таймерів мають багато каналів. (Для цього контролера п'ять -- по 4 
канали, три -- по 2, і три -- єдиний (комплементарні не рахуючи). 
 
Захоплення
 ШІМ, на яке ми покладаємося, потребує двох каналів, генерація TRIG -- 
ще одного. Отож, одного таймера для керування далекоміром має 
вистачити. 
Заради простоти я не став вішати на четвертий канал ШІМ для візуального 
відображення віддалі світлодіодом. Залишимо це на домашнє завдання. 
Видається, це можливо, хоч гарантії, не зробивши, не дам.
Користуватимемося
 таймером TIM3, його CH1 i CH2 займатимуться захопленням ECHO, а CH3 -- 
TRIG. Тому, без використання 
ремапінгу, апаратна конфігурація така:
 
- TRIG -- PA6 (TIM3_CH1) 
 
- ECHO -- PB0 (TIM3_CH3)
 
- PC8 -- синій світлодіод 
 
- PC9 -- зелений світлодіод 
 
 Думаю, можна зробити краще, вважатимемо приклад нижче лише технологічною демонстрацією.
Логіка роботи програми