Uart_Printf()

來源:互聯網
上載者:User

轉自:http://blog.163.com/huangwei820410@126/blog/static/24070492200962881431558/

 

Uart_Printf

()為常用的串口列印函數,其常用於滿足特定條件時通過串口列印資訊。很多開發人員喜歡在中斷服務程式中使用它,所以,僅僅包含一句Uart_Printf
()的中斷服務程式,可以被認為是一個普遍而簡單的應用。下面給出針對只包含一句Uart_Printf
()的中斷服務程式進行測試的結果。

Uart_Printf()函數分析

ARM與PC機通訊,常通過Uart_Printf()這個函數在上位機裡輸出資訊。下面來詳細分析這個函數功能。

原形:

//-----------------------------------------------------------------

void Uart_Printf(char *fmt,...) //...表示可變參數(多個可變參數組成一

                    個列表,後面有專門的指標指向他),不限定個數和類型,

{

    va_list ap;//初始化指向可變參數列表的指標

    char string[256];

    va_start(ap,fmt);//將第一個可變參數的地址付給ap,即ap指向可變參數列

                         表的開始

    vsprintf(string,fmt,ap);//將參數fmt、ap指向的可變參數一起轉換成格式

                              化字串,放string數組中,其作用同

                              sprintf(),只是參數類型不同

    Uart_SendString(string); //把格式化字串從開發板串口送出去

    va_end(ap);    //ap付值為0,沒什麼實際用處,主要是為程式健壯性

}//-----------------------------

va_list 在這個宏定義在stdarg.h中,所以用到可變參數的程式應該包含這個檔案。

(1)格式化字串

printf(“%s, %-19s: %6.2”,lastname,firstname,prize);

列印結果:Bechr,Teddy               ;2000.00

我們說“ Bechr,Teddy               ;2000.00
”就是一個格式化字串,printf的作用就是把(“%s, %-19s:
6.2”,lastname,firstname,prize)翻譯成電腦認識的字串,而對於“%s, %-19s:
6.2”,lastname,firstname,prize電腦根部不認識,故需要printf翻譯。

(2)vsprintf

函數名: vsprintf

功 能: 送格式化輸出串到指定數組中

用 法: int vsprintf(char *string, char *format, va_list param);

vsprintf與sprintf功能是一樣的,即把格式化字串輸出到指定數組
中,sprintf(char *string, char *farmat
[,argument,...])函數的參數從第二個參數開始與printf是一樣的,只是sprintf是輸出到指定數組中,printf是輸出到螢幕
(一個標準輸出檔案),因而sprintf多了char *string這參數。

Uart_Printf()這個函數在三星提供的庫函數44blib.c中,其中的va_start,vsprintf,va_end等都是在stdarg.h中宏定義的,這個檔案在linux核心中,這裡不多加分析了,先掌握怎麼用它。

總之,這個函數可以簡單的理解為將你C語言裡的輸出習慣轉化為硬體底層能認識的字串。調用這個函數是可以按照標準C裡面向終端輸出的方法,輸出自己的要輸出內容

 

 

 

加幾個標頭檔:

#include <stdarg.h>
      #include <string.h>
      #include <stdlib.h>
      #include <stdio.h>
      #include <ctype.h>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.