高级串口打印函数模板

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

 *开发环境:RealView MDK 

 *处理器  :LPC2103

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

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

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
#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

 

转载请注明出处,谢谢! 

转载于:https://www.cnblogs.com/wenziqi/archive/2010/07/14/1777259.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值