ARM的串口输出有关问题

ARM的串口输出问题
问个困扰了我很久的问题:   Uart_Printf这个函数   我看了它的定义。但还是不很懂。而且用它串口输出的话,显示的是乱码。过程是这样的:我选取了某公司写的测试程序中的3个文件:RTC.C   、44BINIT.S和44blib.c。用这3个文件做了工程。(当然了,我还添加了Main函数)结果串口输出的就是乱码了。是不是我遗漏了什么?不然,怎么会是乱码呢?调此公司的这个测试程序,串口输出都是正常的啊

void   Uart_Printf(char   *fmt,...)
{
        va_list   ap;
        char   string[256];

        va_start(ap,fmt);
        vsprintf(string,fmt,ap);
        Uart_SendString(string);
        va_end(ap);
}
函数中的va_start是什么东东?我怎么从来没见过?

------解决方案--------------------
这些是用来处理可变参数的,具体可查找相关资料
乱码有可能是其它原因造成的,比如波特率,起停位等。