用stm32串口通信时,自己定义了一个usart_printf函数。设定字符串长度时,设定字符长度太短就不断重复第一次读取的字符,设定字符长度太长就会出现乱码和吞字符的情况。是什么原因导致的,对这个方法的数传速度不满意有更高效的数据传输效果嘛
不知道你这个问题是否已经解决, 如果还没有解决的话:C 语言中 printf 函数默认 输出设备是显示器 ,如果 要实现在 串口 或者 LCD 上显示 ,必须 重定义标准库函数里调用的与输出设备相关的函数 。
比如使用 printf 输出到串口 ,需要将 fputc 里面的输出 指向串口 , 这一过程就叫 重定向。
#include <stdio.h> //头文件
// fputc 函数的定义
int fputc(int ch, FILE *f)
{
/* Your implementation of fputc(). */
return ch;
}
注意:需要 包含头文件 stdio.h
,否则FILE类型未定义。勾选了 Use MicroLib 选项,重定向 fputc() 函数后,我们就可以在工程代码中使用 printf() 函数了。