Да, в STM32 HAL есть и "фишка" - прерывание по событию.
IDLE_Callback. HAL_UARTEx_RxEventCallback(UART_HandleTypeDef
*huart, uint16_t Size). Вполне работает. Позволяет парсить "на лету" неизвестный заранее буфер данных посимвольно.
Но нигде кроме форумов не нашёл критерий завершения "события" - клевещут юзеры, что 3,5 символа. Далее обработчик обнуляет индекс буфера и макушку - RxXferCount.
Эта методика начисто не годится при работе с эфирной Сетью и ея протоколами. Но позволяет хитро пожениться с Дурой наследия UART(заранее неизвестным количеством байтов приёма). Как-то так.