在串行输出上格式化字符!

时间:2009-07-20 13:14:13

标签: embedded avr avr-gcc

我正在使用EFSL将SD卡连接到ATmega128。 卡被初始化,但我在串口输出上收到错误“错误0xff(请参阅sandisk docs p5-13)”....

这不是全部,我用'sprintf'来形成我在串口上显示的字符串。令人费解的是,我还在输出中获得了像“%02d”这样的实际格式化字符!我认为我的应用程序本身就崩溃了。我可以提供我的源代码,但它太大了。如果有人想看,我会复制粘贴在这里。

我还检查过sandisk docs p5-13,但我无法理解......

我需要帮助这个人...... 如果有人知道这件事,请告诉我 Thanxs ...

2 个答案:

答案 0 :(得分:1)

我碰巧为ATmega8编写了一些代码,编写了自己的printf函数,输出到串口here

SerWrite函数是将0终止的无符号字符串数组传送到串行端口的函数。

#define SIZE_STATUS 80

void ser_printf(const char *fmt, ...) {
    va_list args;
    uchar STATUS[SIZE_STATUS];
    va_start(args, fmt);
    uchar s = (uchar) vsnprintf(STATUS, SIZE_STATUS, fmt, args);
    va_end(args);
    SerWrite(STATUS, s); 
}

答案 1 :(得分:1)

我不知道怎么回事,但是当我使用不同的卡时,问题就解决了。我尝试了两张带有FAT32格式的1/2 GB卡;两个都没有用,但工作的卡是16 MB的canon卡与FAT12格式。我想弄清楚这一点。如果我发现它,我会发布答案, 无论如何,谢谢你们......