你這個函數(shù)時無法打印漢字的,需要自己搞個printf函數(shù),我這里有參考的程序
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
/**********************************************
名稱:Uart_write
功能:串口發(fā)送函數(shù)
參數(shù):*pBuf--> 待發(fā)送數(shù)據(jù)指針 len-->數(shù)據(jù)長度
返回:void
**********************************************/
void Uart_write(uint8 *pBuf,int ulLen)
{
int i;
for(i = 0; i < ulLen; i++)
{
SBUF=*pBuf; //數(shù)據(jù)加載到發(fā)送緩沖區(qū)
while(!TI); //等待發(fā)送完成
TI=0; //發(fā)送標志清零
pBuf++; //數(shù)據(jù)指針指向下一組數(shù)據(jù)
}
}
/*********************************************
名稱:printfs
功能:類似printf串口打印函數(shù)(采用數(shù)組緩存數(shù)據(jù))
參數(shù):fmt-->不定參數(shù)標志位。如%d,%s等
返回:發(fā)送數(shù)據(jù)長度
注意:在IAR平臺正常使用;
但在keil平臺,如果輸出為以下類型,需要改為動,否則數(shù)據(jù)不正常。
顯示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;
}
然后初始化串口后,直接調(diào)用printfs函數(shù):比如printfs("大家好!\r\n"); |