Por hardware retrasos quise decir "Timers".
La ventaja de usar los temporizadores de cuenta de la demora es que proporcionan una manera para permitir que async contar. El uso de un Software "retraso" se fuerza a que el controlador de poner todos sus recursos en el procesamiento de algún tipo de bucle (el incremento de una variable hasta un valor dado) y bloqueando así el resto de la ruta de ejecución de código.
Si el retardo de hardware es tan bueno, entonces, ¿por qué es el Software retrasos necesarios?
Un software de retraso es más fácil de implementar y puede ser suficiente si sólo es un plazo muy corto, que no es significativamente interrumpir cualquier otra tarea en la principal secuencial código de la ruta de procesado. Además, los temporizadores pueden estar en uso por algún otro hardware relacionados con tareas como la generación del PWM y no puede ser "libre" para ser configurado de acuerdo a sus requerimientos de retraso.
Otro caso de uso sería algún retraso inicial que se requiere antes de que el bucle principal se está ejecutando. No habría ninguna necesidad de utilizar un retardo de hardware en ese caso.
Una última cosa que viene a la mente es que un software de retraso no requiere interrupciones ser habilitado globalmente, mientras que un requisito para el temporizador basado retrasos (al menos para el caso de uso habitual).