TimeUtils. An Interrupt-based library for providing micro-second timing functionalities on STM32 Microcontrollers written in HAL