STM32使用printf打印输出到串口


最近调试STM32代码的过程中,想先把串口调通,然后好测试其他程序部分。在串口调通后,想着使用printf这个C语言常用的打印输出。参考了一些大神的文章,整理过程如下:。

首先,在C语言中,我们使用printf函数是需要添加头文件#include<stdio.h>的,这样才能打印输出到控制台。同样在嵌入式STM32开发过程中,也是需要添加头文件<stdio.h>

其次,我们需要printf函数经串口输出,我们需要对stdio.h文件的fputc进行重定向操作:

int fputc(int ch, FILE *f)
{
	USART_SendData( USART1, (uint8_t) ch );                         //发送字符
	while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);   //检查是否发送完毕
	return (ch);
}

上面是以串口1为例,同样可以是其他串口。

最后,在【Options for target】中设置 Use MicroLiB,如下图:

STM32使用printf打印输出到串口

MicroLIB是一个缺省的C库,用于内存受限制的嵌入式程序开发。printf函数是基于C库实现的,所以这里需要勾选。

下面是参考网络大神的博文链接:

https://blog.csdn.net/lalala098/article/details/81238582

https://blog.csdn.net/kelsey11/article/details/51246636