在stm32中将程序下载至开发板上,printf 函数在串口助手显示不出来如何解决

在stm32中将程序下载至开发板上,printf 函数在串口助手显示不出来如何解决

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客也许可以解决你的问题👉 :stm32中printf整形和浮点型会进入硬件错误中断
  • 除此之外, 这篇博客: STM32 在PC端串口助手上打印中文字符----printf()函数重定向中的 printf()的重定向(三个步骤) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    步骤一:
    重定向: 简单来说就是用户写了一个跟C标准库一模一样的函数,在进行工程编译时,连接器检查到用户自己编写的有某个和C库函数同名的用户写的函数,就会优先采用用户编写的函数,这就叫重定向; 而且这里我们为了实现重定向printf()函数,我们重写了fputc(int ch,FILE *f)这个C标准库函数,因为printf()在C标准库函数中实质上是个宏定义,最终调用的是fputf(int ch,FILE *f)这个函数;

    //重定向C库函数printf()到串口,重定向后可使用printf();
    int fputc(int ch,FILE *f)
    {
    	USART_SendData(USART1,(uint8_t)ch);
    	while(!(USART_GetFlagStatus(USART1,USART_FLAG_TC)));
    	return ch;
    }
    

    printf()对应的底层函数接口在"stdio.h"中的第673行
    在这里插入图片描述
    注:

    1. ch为要发送的8位数据;
    2. 若使用C标准输出库函数,需要在main.c中把stdio.h头文件包含进来,还要在魔法棒中勾选一个“Use MicroLIB(使用微库)”,这个微库是MDK为嵌入式应用量身定做的C库,在编程时,要先有库,才能重定向;如下图配置;
      步骤二
      在这里插入图片描述
      步骤三
      在需要用到printf()函数的文件中加上头文件 stdio.h 文件;如下列工程;
    #include "stm32f10x.h"
    #include "usart.h"
    #include "stdio.h"   //标准输入输出头文件;
    #include "systick.h"
    
    int main()
    {
    	systick_Init();
    	USART1_Init(115200);
    	while(1)
    	{
    		printf("无语尊wuyuzun\n");
    		delay_ms(100);
    	}	
    }
    
    

    完成上面这两个操作后,就可以通过串口助手软件看输出了:
    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^