【前言】
在工程调试中,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生成后,又得重新添加。