Я бы предложил создать меньшую (настолько простую, насколько это возможно) программу, которая ничего не делает, кроме как получает (прерывая?) Данные и мигает светодиодом, или возвращает их назад, или каким-либо другим способом, указывающим на то, что вы можете получать надежно.Используйте это, чтобы поговорить с эмулятором терминала или другим известным рабочим интерфейсом.Вырежьте всех возможных посредников и неизвестных.
Проверьте также регистры ошибок UART и конфигурацию, чтобы убедиться, что ваши настройки часов / четности / данных совпадают с обоих концов.Сначала начните с медленной скорости.
Надежно работайте по одной штуке за раз, затем сложите их вместе.