打印
[STM32F4]

在 STM32F407 上重新定位 printf

[复制链接]
64|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
唐纳德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 库初始化是否正确?

使用特权

评论回复
5
stormwind123| | 2025-4-9 13:00 | 只看该作者
HAL_UART_Transmit 是阻塞模式,可能由于数据量较大或调用时机问题导致数据未正确发送。

使用特权

评论回复
6
probedog| | 2025-4-9 14:00 | 只看该作者
检查一下UART 初始化是否正确。

使用特权

评论回复
7
classroom| | 2025-4-9 14:46 | 只看该作者
重定向 printf 到 __io_putchar。

使用特权

评论回复
8
七毛钱| | 2025-4-9 15:09 | 只看该作者
波特率不匹配吗?

使用特权

评论回复
9
duo点| | 2025-4-9 16:00 | 只看该作者
如果数据量较大,建议使用 DMA 模式以减少阻塞。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

9

帖子

0

粉丝