【前言】
在工程调试中,printf是非常重要的输出,在是在stm32cubeMX生成的cmake工程中,他的cmake没有添加对printf float的支持。经查找资料后,找到了解决方法,现在记录如下:
【现象】
我输入测试 printf("float value:%f\n",3.14159); 串口输出中的值为空白的。

【解决办法】
1、找到gcc-arm-none-eabi.cmake这个文件,添加-u _printf_float的选项:

2、确认重定向函代码如下:
/* USER CODE BEGIN 1 */
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
// 阻塞方式打印 -> 串口1
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
/* USER CODE END 1 */3、重新编译后就可以实现打印float数了。

虽然解决了,但是重新用cubeMX生成后,又得重新添加。
我要赚赏金
