Не могли бы вы просто записать данные данные в соответствующие регистры usart?То есть, если в строке usart1 прошел байт, и он хранится в регистре данных usart1, прочитайте его и запишите в регистр данных usart5 и установите бит, чтобы чип узнал, что он готов передать байт.Сделайте то же самое для моста usart5 - usart1.
Если вас беспокоит чтение / запись нескольких байтов, рассмотрите возможность добавления буферов передачи и приема, чтобы справиться с этим.
Если бы мы делали метод опроса, код выглядел бы примерно так (примечание: я в основном имею дело с AVR, поэтому я могу не использовать свои имена регистров, но метод должен быть в этих строках):
// Check to see if data has been written to usart1 and transfer it usart5.
if(USART1_CR1&(1 << USART1_SR_RXNE))
{
// May want to avoid race conditions, so disable interrupts.
// Write the data in usart1 to usart5
USART5_DR = USART1_DR;
// Set the data ready bit on the usart5 control register.
USART5_CR1 |= (1 << USART_SR_RXNE);
// Enable interrupts.
}
Я использовал этот урок для языка STM32.Не в том, чтобы отключать прерывания.Вы также можете записать в буфер.