JP7FKFの備忘録

ヒトは,忘れる生き物だから.

SW4STM32で実数型をsprintfするときのtips

SW4STM32で実数型の値を出したくて,実数型のフォーマット指定子である%fをいれてみたらエラーが. なんでやねんって話である. これが組み込みプログラミングらしいところで,おそらく実数型のsprintfはコードサイズが増えるため,デフォルトでは利用しないようになっているのではないかと予想する.

エラー文は下記の通り.

The float formatting support (-u _printf_float) is not enabled from linker flags

検索したところ,下記のサイトに以下のような記述を見つけた.
PrintfのFloat出力: Crescent

結論から言うとプロジェクト内のプロパティから、
C/C++ Build」->[Settings]->
[Tool Settings]->[MCU GCC Linker]->[Miscellaneous]
でLinker flagsの
「-specs=nosys.specs -specs=nano.specs」
から
「-u printf_float」
を追加して
「-specs=nosys.specs -specs=nano.specs -u
printf_float」
にすることです。

なるほど.ということでこの通りに設定をいじる. f:id:jp7fkf:20180109000457p:plain

するとめでたくコンパイルは通り,正しく実数型を扱うことができました.めでたし.

Reference