你這個函數時無法打印漢字的,需要自己搞個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"); |