0

我正在为 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 的某个地方崩溃了,但我仍然不知道为什么。我怎样才能得到这个工作?

4

1 回答 1

0

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

于 2012-08-31T10:03:45.940 回答