我一直在阅读用于串行通信的握手和硬件流控制,但我有一个问题,似乎找不到答案。
如果在cubeMX上为串行端口设置硬件流控制,它将设置所需的针脚。我知道您也可以使用其他引脚,这可以通过cubeMX来完成。
我的问题是,您是否可以使用不同的引脚手动设置硬件流控制,还是必须严格使用已实现的引脚?
我正在使用STM32F207ZETx,并且正在使用USB和串行接口-但是,当使用USB外设时,它将阻塞我需要的USART1的硬件流控制引脚,并且我的项目需要硬件流控制!用于硬件流控制的备用引脚也已经使用过,所以我有点不满意。
答案 0 :(得分:2)
我的问题是,您是否可以使用不同的引脚手动设置硬件流控制,还是必须严格使用已实现的引脚?
您可以用软件自己进行硬件流控制,实际上,这很简单。
USART1_RTS是输出引脚。当USART1准备接收数据时,它被设置为高电平。 USART1_CTS是输入引脚。另一端在准备好接收数据时将其设置为高,而在未准备好接收数据时将其设置为低。
假设您一次发送和接收一个字符,并为USART1_RTS和USART1_CTS使用两个GPIO引脚,而不是硬件支持。
通常,您将USART1_RTS保持为高电平。接收数据时,如果接收缓冲区用完了,请将USART1_RTS设置为低电平。当您在接收缓冲区中腾出更多空间时,请将USART1_RTS设置为高电平。 (如果您的缓冲方案不能用完接收缓冲区,则可以将RTS线路拉高。)
在发送每个字符之前,请检查USART1_CTS是否为高。如果为低电平,则不发送数据,而是等待USART1_CTS变为高电平。
就是这样。