高级串口打印函数模板

/***************************************************
 *作     者:温子祺
 *联系方式:wenziqi@hotmail.com
 *说   明 :
高级串口函数模板

 *开发环境:RealView MDK 

 *处理器  :LPC2103

 ***************************************************/

    对于经常编程的技术员来说,printf函数再熟悉不过了,功能强大,能够随心所欲地输出任何打印信息,虽然printf函数是很好用,但是存在一定的局限性,只能够用于固定的串口进行打印信息。一旦打印的信息不是通过串口而是通过网络、USB、LCD进行打印,那么咋办?只能修改开发环境内部函数了,这样动不动就对开发环境的函数动手脚,可不是我们要想要的。 为了不对开发环境内部函数动手脚,我们可以引用头文件,#include <stdarg.h>头文件。串口打印函数如下:

 

代码
#include <stdarg.h>

extern int vsprintf(char *string, char *format, va_list param);
 /******************************************************
*文件名称:UARTInit
*输 入:unFpclk 外设时钟频率
unBaud 波特率
*输 出:无
*功能说明:串口初始化
******************************************************
*/
void UARTInit(UINT32 unFpclk,UINT32 unBaud)
{
UINT16 usFdiv;

PINSEL0
&=~0x0F;
PINSEL0
|= 0x05;

U0LCR
= 0x83;

usFdiv
= (unFpclk / 16) / unBaud;

U0DLM
= usFdiv / 256;
U0DLL
= usFdiv % 256;

U0LCR
= 0x03;
}
/******************************************************
*文件名称:UARTSendByte
*输 入:ucByte 字节
*输 出:无
*功能说明:串口 发送单个字节
******************************************************
*/
void UARTSendByte(UINT8 ucByte)
{
U0THR
= ucByte;
while ((U0LSR & 0x40) == 0);
}
/******************************************************
*文件名称:UARTPrintf
*输 入:pcStr
*输 出:无
*功能说明:串口 打印字符串
******************************************************
*/
void UARTPrintf(CHAR *pcStr, ...)
{
va_list ap;
CHAR
string[256];

va_start(ap,pcStr);
vsprintf(
string,pcStr,ap);
UARTPrintfString(
string);
va_end(ap);
}

 

注意事项: 

(1)一定要外部声明vsprintf函数。

(2)调用 stdarg.h头文件时,编译出的代码会默认增加4KB左右。

 

使用方法:

该UARTPrintf与默认的printf使用方法一样。

示例:UARTPrintf("i=%d,j=%x",i,j);

 

普通串口打印函数模板地址:http://www.cnblogs.com/wenziqi/archive/2010/07/14/1777199.html

 

转载请注明出处,谢谢! 

posted @ 2010-07-14 15:02  温子祺  阅读(1210)  评论(0编辑  收藏  举报