[应用相关] STM32CubeIDE printf重定向到串口问题

[复制链接]
980|28
iyoum 发表于 2025-9-22 17:45 | 显示全部楼层
__GNUC__是GCC内置的宏定义,使用GCC编译时会自动定义该宏。
pentruman 发表于 2025-9-22 18:25 | 显示全部楼层
抽象底层串口操作              
janewood 发表于 2025-9-22 18:46 | 显示全部楼层
编译器差异导致的函数原型冲突              
usysm 发表于 2025-9-22 19:35 | 显示全部楼层
需​​重写__io_putchar函数​​
jackcat 发表于 2025-9-22 20:47 | 显示全部楼层
将重定向函数的定义放在main函数之前
febgxu 发表于 2025-9-22 22:06 | 显示全部楼层
如果使用 STM32CubeIDE(默认使用 GCC 编译器),则定义 PUTCHAR_PROTOTYPE 为 int __io_putchar(int ch)。
如果使用 Keil MDK(默认使用 ARM Compiler),则定义 PUTCHAR_PROTOTYPE 为 int fputc(int ch, FILE *f)。
maudlu 发表于 2025-9-22 22:36 | 显示全部楼层
STM32CubeIDE 使用 GCC 编译器,GCC 要求实现 __io_putchar 函数来完成标准输出重定向。
sdlls 发表于 2025-9-25 11:43 | 显示全部楼层
未包含stdio.h头文件              
pixhw 发表于 2025-9-25 12:59 | 显示全部楼层
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif

PUTCHAR_PROTOTYPE
{
    HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0x200);
    return ch;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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