作为Uni任务的一部分,我正在为HCS12微控制器编写与液晶屏接口的C代码,并且我遇到了一个问题,如果我试图用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中的某个地方崩溃了,但我仍然不知道为什么。我怎么才能让它正常工作呢?
发布于 2012-08-31 18:03:46
你的缓冲区在堆栈上吗?一些编译器(如Keil编译器)会假设您不想重入,并将局部变量放在数据空间中。但是,如果它放在堆栈上,它可能太大了。您可能希望将buffer设置为static,看看这是否有帮助。
https://stackoverflow.com/questions/11963541
复制相似问题