3.串口printf调试输出

发布时间 2023-06-29 19:47:52作者: 面筋玄师

在stm32中先配置使能一个uart串口,保存自动生成uart的.h .c 文件

接着在头文件中包含stdio.h

再在c文件中添加重定向:

  GCC和keil等不同编译器调用printf时候是不同的

  可以定义一个宏保证他们的兼容性,即使printf函数重定向

 

#ifdef __GNUC__    //选择gcc编译时才会定义的宏
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch,FILE *f)    //单片机字符也是int类型保存
#endif


PUTCHAR_PROTOTYPE
{
	HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);
	return ch;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  

串口浮点数输出:

  由于单片机硬件资源限制(内存小),STM32单片机里C语言标准库的printf()并不支持浮点数的输出

  可以在Properties Settings中添加 -u _printf_float解决