Atmel Studio 7 で std C 関数 printf() を使用して、コンソールで文字列と整数を出力するように Atmel の ARM Cortex M0 の UART を構成しました。
ケースⅠ
printf() タイプの関数を浮動小数点値で出力しようとしています。そのために、次の提案に従いました。
arm-none-eabi-gcc : printf を使用して浮動小数点数を出力する
その後、テキストに続くリンカフラグを別の時間に個別に編集/追加しました:
-lc -u _printf_float
-lc -lrdimon -u _printf_float
ケースⅡ
彼らが言ったことをすべて理解することはできませんでしたが、このフォーラムからもメイクファイルを編集するためのいくつかの提案に従いました。
浮動小数点変数の Printf/Sprintf が機能しない
メイクファイル内に次のテキストを追加しました
ldflags-gnu-y += -lc -u _printf_float
Makefile パス (Atmel Studio 7、ASF を使用): ../src/ASF/sam0/utils/make/Makefile.sam.in
main.c で、次のように浮動小数点数を出力するために printf() を使用しました。
float a = 345.65412;
char buffr[20];
/* --- Print Float using printf only --- */
printf("Float Number 1 : %f\r\n", a);
/* --- Print Float using sprintf ---*/
sprintf(buffr, "Float Number ( Using Sprintf) : %3.3f\r\n", a);
printf(buffr);
UART コンソール アプリでの出力:
ケース I :
Float Number 1 : 2.000000
Float Number ( Using Sprintf) : -0.000
ケース II :
Float Number 1 :
Float Number ( Using Sprintf) :
Atmel Studio 7 の ARM Cortex M0 (SAM B 11) のコンソールで浮動小数点数を印刷するために、printf()、sprintf()、または vprintf() を動作させるようにリンカーを構成する方法を知っている人はいますか?