Timer hardware
Un contatore inciso nel silicio che avanza al ritmo di un clock, indipendentemente da ciò che sta facendo la CPU.
Al centro c'è un registro contatore che si incrementa a ogni impulso di clock, di solito dopo che un prescaler ne ha ridotto la frequenza. Quando il conteggio raggiunge un valore di confronto o torna a zero, il timer può generare un interrupt, azzerarsi o commutare un pin di uscita. Con questi elementi la stessa periferica produce interrupt periodici, PWM, misure di impulsi tramite input capture e finestre temporali precise tramite output compare.
Il vantaggio è che la temporizzazione non dipende dalla latenza degli interrupt né dal codice in esecuzione. Un ciclo di attesa in C cambia con le opzioni del compilatore; un timer no. Un tipico STM32 ne ha una dozzina di larghezze diverse, e a fine progetto di rado ne resta uno libero.