MCUXpresso IDE/SDKでは、大きく分けて3種類のPRINTF関数があり、浮動小数点を扱うための設定はそれぞれ異なります。MCUXpresso IDEの既存のプロジェクトを下記のように変更してください。
MCUXpresso IDEの画面の左上にあるProject Explorerビューで設定したいプロジェクトを選択し、左下のQuickstart PanelビューのEdit project settingsをクリックして開き、プロジェクトのプロパティ画面から設定できます。
○プリプロセッサの設定:プロパティ画面の左側のメニューよりC/C++ Buildの中にあるSettingsをクリックし、右側の画面でTool Settingsのタブを開きます。このタブの中のMCU C Compilerの中のPreprocessorを開き、Defined symbolesで定義を行います
○ライブラリの設定:プロパティ画面の左側のメニューよりC/C++ Buildの中にあるSettingsをクリックし、右側の画面でToolSettingsのタブを開きます。このタブの中のMCU Linkerの中のManaged Linker Scriptを開き、Libraryのプルダウンメニューで設定します
■SDKのライブラリ (\utilities\fsl_debug_console.c)の場合
○プリプロセッサの設定:
SDK_DEBUGCONSOLE=1・・・SDKのライブラリを使うことを指定
PRINTF_FLOAT_ENABLE=1 ・・・浮動小数点を有効にする
■RedLib系ライブラリの場合
○プリプロセッサの設定:
SDK_DEBUGCONSOLE=0 ・・・SDKのライブラリを使わないことを指定
SDK_DEBUGCONSOLE_UARTを追加・・・SDKのライブラリ以外ではUARTに出力させるために必要
CR_INTEGER_PRINTFを削除 ・・・浮動小数点を有効にする
(PRINTF_FLOAT_ENABLEはSDKのライブラリ用なので未使用)
○ライブラリの設定:
下記いずれかのライブラリを選択
- RedLib (nohost)
- RedLib (nohost-nf)
- RedLib (semihost)
- RedLib (semihost-nf)
- RedLib (semihost-mb)
- RedLib (semihost-mb-nf)
※RedLib (none)は使用できません
※RedLibのsemihost系のライブラリを選択し、かつ、SDK_DEBUGCONSOLE_UARTを定義した場合、UARTに出力されsemihostに出力できない点が、NewLib系と動作が異なるので注意してください
■NewLib系の場合
○プリプロセッサの設定:
SDK_DEBUGCONSOLE=0 ・・・SDKのライブラリを使わないことを指定
SDK_DEBUGCONSOLE_UART ・・・SDKのライブラリ以外ではUARTに出力させるために必要。semihostのライブラリを使う場合は設定不要
(CR_INTEGER_PRINTFはRedLib向けの設定でNewLib系では未使用のため、あってもなくても良い)
○ライブラリの設定:
下記いずれかのライブラリを選択
- NewLibNano (nohost)
- NewLibNano (semihost)
- NewLib (nohost)
- NewLib (semihost)
NewLibNano系を選択した場合、すぐ下にあるEnable printf floatにチェックを入れる
※NewLibNano (none)、NewLib (None)は使用できません
※NewLib系のsemihost系のライブラリを選択し、かつ、SDK_DEBUGCONSOLE_UARTを定義した場合でも、semihostに出力されます。(RedLib系と動作が異なるので注意)
参照
MCUXpresso IDEのインストール先(C:\nxp\MCUXpressoIDE_24.9.25など)のMCUXpresso_IDE_24.9_User_Guide.pdf
- 205ページ:19.5 Use of printf