本帖最后由 huhu2009 于 2010-5-13 11:04 编辑
当然用过了,最常用的做法就是输出到串口,这样跑了long-run就有依据了,不过一般debug时我不用它。
函数printf() 最终是调用了底层的输入/ 输出函数_sys_write() 来实现输出操作的,至于具体的实现,每版代码可能的都不一样,以我用的uv4来说,对于keil自带的demo,_sys_write()调用sendchar(),如(摘自retarget.c):
int _sys_write (FILEHANDLE fh, const U8 *buf, U32 len, int mode) {
if (fh == STDOUT) {
for ( ; len; len--) {
sendchar (*buf++);
}
return (0);
}
}
int sendchar (int ch) {
if (ch == '\n') {
while (!(USART1->SR & USART_FLAG_TXE));
USART1->DR = '\r';
}
while (!(USART1->SR & USART_FLAG_TXE));
return (USART1->DR = (ch & 0x1FF));
}
这里,printf的结果都通过串口1输出,你在PC端用超级终端连接,进行简单的设置就可以看到内容了。 |