Объяснение
ISR должна быть короткой: фиксировать событие и передавать работу задаче. DMA переносит данные без обработки каждого байта CPU. volatile не обеспечивает атомарность и взаимное исключение.
Задача для самостоятельного решения
Делает ли volatile counter++ безопасным между ISR и main?
Показать разбор ответа
Нет: это чтение–изменение–запись. Нужна атомарная операция или корректная критическая секция с учётом платформы.