在stm32中将程序下载至开发板上,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行
注:
#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);
}
}
完成上面这两个操作后,就可以通过串口助手软件看输出了: