0

Uni の割り当ての一環として、HCS12 マイクロコントローラーが LCD 画面とインターフェイスするための 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 のどこかでクラッシュすることがわかりますが、その理由はまだわかりません。どうすればこれを機能させることができますか?

4

1 に答える 1

0

バッファはスタックにありますか? 一部のコンパイラ (Keil コンパイラなど) は、再入可能性が不要であると想定し、ローカル変数をデータ空間に配置します。ただし、スタックにある場合は、大きすぎる可能性があります。バッファを作成してstatic、それが役立つかどうかを確認することをお勧めします。

于 2012-08-31T10:03:45.940 に答える