如上所述,将其设置为输出推挽模式可以解决问题,但是您可能还需要检查“最大输出速度”是否设置为“非常高”,如果您的系统可以容忍,请添加内部拉-上电阻;我知道关于 USART 是否应该有引体向上有各种不同的思想流派,所以尝试一下,看看它是否能满足您的需求/需要/项目允许。
如果您使用 STM32CubeMX 进行初始化/配置,那么这些设置都可以在 pinout & configuration > USARTx(或 UARTx,无论您用于项目的哪个通道)> GPIO Settings 中找到。
如果您只是手动修改模板文件(并假设您使用的是 HAL 库),那么引脚设置应该在项目的 src 文件夹中,在名为 stm32F4xx_HAL_MSP.c 的文件中(或您使用的任何芯片)使用)
您正在寻找这些线路;
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
确保 GPIO.InitStruct.Speet 设置为非常高(如上)并将 InitStruct.Pull 设置为: GPIO_InitStruct.Pull = GPIO_PULLUP;
我已经成功地完全滥用了 STM32F4 上的 UART 并让它以 15MB/s 的速度运行而不会丢失位,这是我的 FTDI 到 USB 转换器运行的最快速度。我看到虽然在 CubeMX 设置中,它说要保持在 1MB/s 以下。