我正在为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的某个地方崩溃,但我仍然不知道为什么。 我怎样才能使这个工作?
答案 0 :(得分:0)
你的缓冲区在堆栈上吗?一些编译器(比如Keil的编译器)会假设你不想重入并将局部变量放在数据空间中。但是,如果它在堆栈上,它可能太大了。您可能想要创建缓冲区static
并查看是否有帮助。