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

问题描述 投票:-1回答:1

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

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

我的问题是,您是否可以通过使用不同的引脚手动设置硬件流量控制,或者您是否必须使用实现的引脚?

我使用的是STM32F207ZETx,我使用的是USB和串口 - 但是当使用USB外设时,它会阻止我需要的USART1的硬件流控制引脚,我需要为我的项目进行硬件流控制!用于硬件流控制的备用引脚也已经使用,所以我有点腌渍。

c embedded stm32 cubemx
1个回答
2
投票

我的问题是,您是否可以通过使用不同的引脚手动设置硬件流量控制,或者您是否必须使用实现的引脚?

您可以自己在软件中进行硬件流控制,事实上它很简单。

USART1_RTS是输出引脚。当USART1准备好接收数据时,它被设置为/高。 USART1_CTS是输入引脚。另一端在准备好接收数据时将其设置为高,而在不准备接收数据时将其设置为低。

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

通常,您将USART1_RTS保持为高电平。接收数据时,如果接收缓冲区用完,则将USART1_RTS设置为低电平。当您在接收缓冲区中腾出更多空间时,将USART1_RTS设置为高电平。 (如果您的缓冲方案不能用完接收缓冲区,则可以将RTS线绑定为高电平。)

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

而已。

© www.soinside.com 2019 - 2024. All rights reserved.