更改STM32上的硬件流控制引脚

Changing hardware flow control pins on STM32

我一直在阅读有关串行通信的握手和硬件流控制的资料,但我有一个问题似乎找不到答案。

如果您为 cubeMX 上的串行端口设置硬件流控制,它将设置所需的引脚。我知道您也可以使用其他引脚,这可以通过 cubeMX 来完成。

我的问题是,您可以使用不同的引脚手动设置硬件流控制,还是必须严格使用已实现的引脚?

我正在使用 STM32F207ZETx,我正在使用 USB 和串口 - 但是当使用 USB 外围设备时,它会阻止我需要的 USART1 的硬件流控制引脚,我的项目需要硬件流控制!用于硬件流控制的备用引脚也已使用,所以我有点困惑。

My question is, could you set up hardware flow control manually by using different pins or do you strictly have to use the implemented pins?

你可以在软件中自己做硬件流控,其实做起来也很简单。

USART1_RTS是输出引脚。 USART1 准备好接收数据时为set/high。 USART1_CTS 是输入引脚。另一端准备接收数据时置高,不接收时置低。

假设您一次发送和接收一个字符,并使用两个 GPIO 引脚用于 USART1_RTS 和 USART1_CTS 而不是硬件支持。

通常情况下,您会保持 USART1_RTS 高。接收数据时,如果您 运行 正在接收缓冲区外,请将 USART1_RTS 设置为低电平。当您在接收缓冲区中腾出更多空间时,您可以将 USART1_RTS 设置为高。 (如果您的缓冲方案不能 运行 超出接收缓冲区,您可以将 RTS 线连接到高电平。)

在发送每个字符之前,您检查 USART1_CTS 是否为高电平。如果低,则不发送数据,而是等待 USART1_CTS 变高后再发送。

就是这样。