Quadravox、AQ430開発ツールからVisualGDB Cコンパイラに変更して、別のCコンパイラを使用してTexas Instruments(TI)MSP430マイクロコントローラ用に完全にテストされたCプログラムをアップグレードしています。
プログラムは、VisualGDBを使用してエラーと警告をゼロにしてコンパイルします。割り込みサービスルーチン、タイマー、UART制御など、すべてが機能しているようです。ただし、sprintfの特定の使用法は機能していません。例えば:
unsigned int duration;
float msec;
msec = (float)duration;
msec = msec / 125.0;
sprintf(glb_response,"break: %3.1f msec",msec);
これは次を返します:break: %3.1f msec
これは予想されることです:break: 12.5 msec
私は次のことを学びました(ウィキペディアから):
コンパイラオプション--printf_support=[full | 最小限| nofloat]を使用すると、printf / sprintfのより小さく、機能が制限されたバリアントを使用し、ビルド時にその選択を行うことができます。
有効な値は次のとおりです。
full:すべてのフォーマット指定子をサポートします。これがデフォルトです。
nofloat:浮動小数点値の印刷のサポートを除外します。%f、%g、%G、%e、および%Eを除くすべてのフォーマット指定子をサポートします。
最小:幅または精度フラグなしの整数、文字、または文字列値の印刷をサポートします。具体的には、%%、%d、%o、%c、%s、および%x形式指定子のみがサポートされます
printfを完全にサポートする必要があります。このCプログラムは何年にもわたって使用されているため、私の製品のMSP430がこれをサポートすることを私は知っています。
私の問題は、1)VisualGDBにprintfサポートを完全に設定する手段があるかどうか、2)ある場合、どこで、どこに設定するかがわからないことです。
ありとあらゆるコメントと回答をいただければ幸いです。