STM32
直播中

刘丰标

7年用户 1058经验值
私信 关注
[问答]

STM32是怎样使用printf函数给串口打印信息的

STM32是怎样使用printf函数给串口打印信息的?有哪些步骤?

回帖(1)

蒋进如

2021-12-2 14:33:22
STM32使用printf函数给串口打印信息的执行步骤为:
  1.重定向printf函数
  给uart.c文件中增加如下函数:

//重定向c库函数printf到USART1int fputc(int ch, FILE *f){ /* 清SR寄存器中的TC标志 */ USART_ClearFlag(USART1,USART_FLAG_TC);  /* 发送一个字节数据到USART1 */ USART_SendData(USART1, (uint8_t) ch);  /* 等待发送完毕 */ while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); return (ch);}

  2.增加头文件stdio
#include
  3.勾选Use MircoLIB
  




  以上3条,缺一不可,如果你只做了第一步,编译的时候,就会报错,如下所示:
CFGuart.c(52): error:  #20: identifier "FILE" is undefined  如果只做了前两步,而没有勾选Use MicorLIB,编译器虽然不会报错,但是串口不会输出数据。
  很多人做了重定向函数以后,输出一串字符的第一个字符会丢失,根本原因是因为SR寄存器中的TC标志默认是置1的。
  解决方法1:和我上面的重定向函数一样,在开始先用USART_ClearFlag(USART1,USART_FLAG_TC);函数把TC标志清0。
  解决方法2:写字符串的时候,前面留一个空格。
  两种方法选一个即可。

  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分