您的位置:首页 > 其它

SMARTARM2200 ADS工程在IAR EWARM 5.3上的移植(4)-printf的串口实现

2009-08-28 10:55 567 查看
调试程序时需要输出串口信息到HyperTerminal,一开始没有找到IAR中实现printf从串口输出的方法,所以先自己写了一个print_string的函数.

在ADS只需要实现一个_printf就可以实现printf从串口输出了.
int _printf(const char *fmt, ...)
{
va_list args;
int i;
char printbuffer[200];

va_start (args, fmt);

i = vsprintf (printbuffer, fmt, args);
va_end (args);

Uart_SendString (printbuffer);
return 0;
}


于是仿照这个函数,在IAR中写了一个print_string函数
void print_string (const char *fmt, ...)
{
va_list args;
char printbuffer[200];

va_start (args, fmt);

/* For this to work, printbuffer must be larger than
* anything we ever want to print.
*/
vsprintf (printbuffer, fmt, args);
va_end (args);

/* Print the string */
Uart_SendString (printbuffer);
}


不过有时候从其他地方拷过来的代码有很多printf,另外也很想知道IAR中如何实现printf串口输出,找了很多资料,终于实现了
即实现int putchar(int data)就可以了,把uart_sendchar函数里的内容复制到putchar就可以了,然后就可以使用printf从串口打印信息了.
int putchar(int data)
{
while((U0LSR & 0x00000020) == 0);
return(U0THR = data);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐