使用Linux终端从STM32的串口读取数据

Reading data from the serial port of a STM32 using the Linux terminal

我正在尝试使用 RS232-USB 电缆通过 STM32F429ZI 读取和发送数据。

对于硬件,我使用的是连接到 STM32 的 UART2 端口 PA2 和 PA3 的 RS232 DB9 到 TTL MAX3232 转换器。我不知道这是否相关,但我正在使用几根 10 厘米长的电缆将 RS232 模块的 TX-RX 连接到 STM32。

然后,我尝试使用 Kubuntu 上的 Linux 终端从 uC 发送和读取数据。这些是我配置连接所遵循的步骤:

到目前为止一切顺利。我可以毫无问题地将数据从我的计算机发送到 STM32。为了对此进行测试,我正在执行以下操作:

所以,经过测试,我实际上可以将数据从我的计算机发送到 STM32,我尝试做相反的事情:将数据从 STM32 发送到我的计算机。但这似乎行不通,因为我真的无法在我的电脑上阅读任何内容。

我在几个论坛上看到,要在 Linux 控制台上从串口读取数据,只需在设备上使用 cat 命令即可。所以,我尝试了几种方法,但我什么都看不懂:

所以,我不知道是我只是使用cat命令错误还是硬件问题或者为什么我可以从我的计算机发送数据但不能读取。

这是我在 STM32 中用来读取和发送数据的程序(C 语言)的一部分:

while(1)
    {
        if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) != RESET)
        {
            Data = USART_ReceiveData(USART2);

            while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET)
                USART_SendData(USART2, Data);
        }
    }

如果有人需要,我可以上传 USART 端口的配置,但考虑到我可以很好地读取数据,我不知道它是否相关。

感谢任何帮助。

提前致谢。

编辑:这是当前项目 - https://github.com/AugustoRiedinger/06TP_E02 ; and the project to read data https://github.com/AugustoRiedinger/06TP_E01

你的循环说“只要不能发送一个字节,无论如何都要反复尝试发送,一旦可以发送一个字节,就丢弃它而不发送”

变化:

       while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET)
            USART_SendData(USART2, Data);

收件人:

       while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
       USART_SendData(USART2, Data);