А чтобы принять данные нужен таск. В уарте же лежат просто байты, а надо их преобразовать в пакеты данных и передать payload логике выше.
Но, это уровень школьника. Студент, при желании, напишет кастомный вектор прерывания для конкретного модуля уарта и скормит его при конфиге драйвера. А дальше уже обработка будет происходить по прерываниям самого уарта