打印
[其他ST产品]

ubuntu stm32cubeide 中printf 发不出数据

[复制链接]
415|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SocialButterfly|  楼主 | 2025-4-3 22:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 windows10 中,用iar创建的项目可以用 printf 将字符串发送到串行端口,有PC串口助手接收,但在 ubuntu  stm32cubeide 中,HAL_UART_Transmit可以成功发送字符到PC,但printf 发不出数据。

使用特权

评论回复
沙发
夜阑风雨| | 2025-4-9 01:21 | 只看该作者
Ubuntu环境下使用STM32CubeIDE时,printf无法通过串口输出数据,而 HAL_UART_Transmit 可以正常工作,这通常是因为标准库的printf 未正确重定向到 UART

使用特权

评论回复
板凳
一秒落纱| | 2025-4-9 02:10 | 只看该作者
STM32CubeIDE 默认使用 NewlibGNU 的标准 C 库),需要手动重定向 _write 函数才能让 printf 输出到串口

使用特权

评论回复
地板
检查你的代码中是否包含类似以下重定向代码并且确保huart1已正确初始化(在 main() 之前调用 MX_USART1_UART_Init()

使用特权

评论回复
5
三生万物| | 2025-4-9 04:24 | 只看该作者
如果使用其他 UART(如 UART2),需修改句柄(如 &huart2

使用特权

评论回复
6
远山寻你| | 2025-4-9 05:42 | 只看该作者
STM32CubeIDE 中,Newlib printf 需要链接器支持。如果使用浮点数(如 printf("%f")),需额外启用浮点支持

使用特权

评论回复
7
淡漠安然| | 2025-4-9 06:47 | 只看该作者
CubeMX中检查UARTTX/RX引脚是否与硬件连接一致(如 PA9/PA10 对应 USART1

使用特权

评论回复
8
光辉梦境| | 2025-4-9 07:21 | 只看该作者
使用 minicom gtkterm 确保波特率、数据位、停止位与 STM32 配置一致

使用特权

评论回复
9
江河千里| | 2025-4-9 08:14 | 只看该作者
printf 默认使用行缓冲(\n 触发刷新),如果字符串末尾无换行符,可能不会立即输出

使用特权

评论回复
10
冰春彩落下| | 2025-4-9 09:35 | 只看该作者
如果堆栈(Stack)设置过小,printf 可能崩溃

使用特权

评论回复
11
别乱了阵脚| | 2025-4-9 10:31 | 只看该作者
某些情况下,Newlib 会尝试使用半主机(Semihosting)模式,导致 printf 无输出

使用特权

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

本版积分规则

13

主题

13

帖子

0

粉丝