vsprintf失败了

时间:2012-08-15 02:55:57

标签: c microcontroller printf

我正在为HCS12微控制器编写C代码以与LCD屏幕接口作为Uni分配的一部分,我有一个问题,如果我尝试使用vsprintf制作printf包装器,会发生异常并且控制器进入无法使用状态。

void printfLCD(const char *fmt, ...) {
    char buffer[256];
    va_list args;
    va_start(args, fmt);
    (void)vsprintf(buffer, fmt, args);
    putsLCD(buffer);
    va_end(args);
}

逐步调试我可以看到它在vprintf的某个地方崩溃,但我仍然不知道为什么。 我怎样才能使这个工作?

1 个答案:

答案 0 :(得分:0)

你的缓冲区在堆栈上吗?一些编译器(比如Keil的编译器)会假设你不想重入并将局部变量放在数据空间中。但是,如果它在堆栈上,它可能太大了。您可能想要创建缓冲区static并查看是否有帮助。