Альтернативний спосіб відліку часу

 
Кам'яна сокира. (c) Wiki  

Відмірювати
 час за допомогою таймерів -- 
найбільш зручний і коректний спосіб. Однак, іноді він може не підходити, з
 тих чи інших мотивів. Одна з альтернатив -- чисто програмна затримка. 
Іншими словами, контролер змушують якийсь час виконувати задані 
інструкції. Якщо потік виконання один і переривань не виникає, такий 
спосіб доволі точний (а з перерахунку вимог, щоб він був точним, видно 
основні його недоліки). Важливо, що на відміну від x86, час 
виконання інструкцій мікроконтролера значно більш передбачуваний.
Наведений нижче приклад реалізації базується на коді з Leaflab Maple IDE, аналогу оболонки Ардуїно для STM32. Увага: Приклад може бути неточним -- особливо ретельно я не тестував.
Update: Див. також розвиток теми в "Мікросекундні затримки та відлік мікросекунд для STM32".
Update: Див. також розвиток теми в "Мікросекундні затримки та відлік мікросекунд для STM32".