Периферийные устройства UART и DMA обычно имеют детектор ошибок, поэтому имеют свои флаги в регистре состояния. При возникновении ошибки, STM32 HAL прекратит любую продолжающуюся передачу и будет ждать, пока вы не обработаете этот сбой. Вы можете проверить с помощью модуля отладки регистры состояния HAL, чтобы устранить проблему, и добавить обработку к ней в своем коде. Сначала вы можете перезагрузить периферийное устройство, запустив DeInit () и сразу после запуска процедуры Init () периферийного устройства с ошибкой, и сбросить любой другой фрагмент кода, например, конечные автоматы и прочее, которое использует данные из этого периферийного устройства.