你这个函数时无法打印汉字的,需要自己搞个printf函数,我这里有参考的程序
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
/**********************************************
名称:Uart_write
功能:串口发送函数
参数:*pBuf--> 待发送数据指针 len-->数据长度
返回:void
**********************************************/
void Uart_write(uint8 *pBuf,int ulLen)
{
int i;
for(i = 0; i < ulLen; i++)
{
SBUF=*pBuf; //数据加载到发送缓冲区
while(!TI); //等待发送完成
TI=0; //发送标志清零
pBuf++; //数据指针指向下一组数据
}
}
/*********************************************
名称:printfs
功能:类似printf串口打印函数(采用数组缓存数据)
参数:fmt-->不定参数标志位。如%d,%s等
返回:发送数据长度
注意:在IAR平台正常使用;
但在keil平台,如果输出为以下类型,需要改为动,否则数据不正常。
显示long类型 %d ===> %ld
显示char类型 %d ===> %bd
*********************************************/
int printfs(char*fmt,...)
{
char pBuf[50];
int ulen;
va_list ap;
va_start(ap, fmt);
ulen = vsprintf(pBuf, fmt, ap);
va_end(ap);
Uart_write((uint8*)pBuf, ulen);
return ulen;
}
然后初始化串口后,直接调用printfs函数:比如printfs("大家好!\r\n"); |