[STM32F4] 在 STM32F407 上重新定位 printf

[复制链接]
 楼主| 唐纳德d 发表于 2025-4-9 09:30 | 显示全部楼层 |阅读模式
用 STM32CubeIDE,将 printf 重新定位到 STM32F407 的 USART6。
MCU 的 USART6 链接到PC的虚拟com。已经使用函数“HAL_UART_Transmit(&huart6, ”A“, 1, 0xFFFF)”测试了 USART6 的连接正常,PC能够接受数据。已经在 main.cpp 中实现了 __io_putchar() 函数,如下所示:
int __io_putchar(int ch)
{
/* Place your implementation of fputc here */
/* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
HAL_UART_Transmit(&huart6, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
然后用printf打印字符串到pc,一直不成功。

laocuo1142 发表于 2025-4-9 10:59 | 显示全部楼层
可能是未正确配置重定向。
flycamelaaa 发表于 2025-4-9 11:36 | 显示全部楼层
可能是编译器选项或启动文件存在问题。
powerantone 发表于 2025-4-9 12:09 | 显示全部楼层
HAL 库初始化是否正确?
stormwind123 发表于 2025-4-9 13:00 | 显示全部楼层
HAL_UART_Transmit 是阻塞模式,可能由于数据量较大或调用时机问题导致数据未正确发送。
probedog 发表于 2025-4-9 14:00 | 显示全部楼层
检查一下UART 初始化是否正确。
classroom 发表于 2025-4-9 14:46 | 显示全部楼层
重定向 printf 到 __io_putchar。
七毛钱 发表于 2025-4-9 15:09 | 显示全部楼层
波特率不匹配吗?
duo点 发表于 2025-4-9 16:00 | 显示全部楼层
如果数据量较大,建议使用 DMA 模式以减少阻塞。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

42

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部