有没有一种简单的方法可以通过软件“桥接”两条U(S)ART线(STM32F107上为USART1和UART5)?

我需要将在USART1处传入的数据转发到UART5并反转。

当前的MCU是STM32F107VCT7

我要这样做的主要原因是通过连接到我的MCU的UART更新设备。 MCU连接到PC。

PC-STM32-其他设备

最佳答案

您能将数据写到适当的usart寄存器中吗?也就是说,如果您在usart1线上有一个字节通过并将其存储在usart1数据寄存器中,请对其进行读取并将其写入usart5数据寄存器,然后将该位置1以使芯片知道已准备好传输该字节。对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.
}


我将this tutorial用于STM32语言。禁用中断不是重点。您可能还想写入缓冲区。

10-08 07:11