有没有一种简单的方法可以通过软件“桥接”两条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语言。禁用中断不是重点。您可能还想写入缓冲区。