zoukankan      html  css  js  c++  java
  • 高级串口打印函数模板

    /***************************************************
     *作     者:温子祺
     *联系方式: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

    转载请注明出处,谢谢! 

  • 相关阅读:
    BZOJ 3555: [Ctsc2014]企鹅QQ hash
    bzoj 4300: 绝世好题 dp
    Codeforces Round #192 (Div. 1) C. Graph Reconstruction 随机化
    Codeforces Round #192 (Div. 1) B. Biridian Forest 暴力bfs
    Codeforces Round #192 (Div. 1) A. Purification 贪心
    HDU 5514 Frogs 容斥定理
    HDU 5515 Game of Flying Circus 二分
    HDU 5521 Meeting 最短路
    HDU 5510 Bazinga 暴力匹配加剪枝
    HDU 5512 Meeting 博弈论
  • 原文地址:https://www.cnblogs.com/wenziqi/p/1777259.html
Copyright © 2011-2022 走看看