Help us understand the problem. What is going on with this article?

nRF52 の printf/NRF_LOG_INFO で float を使う (SEGGER Embedded Studio)

More than 1 year has passed since last update.

センサーの値が0のままで、あれれーと思っていたら整数値だと思っていた変数がfloatでした。 %f を表示しようと思いましたがあれこれしないといけませんでした。

環境

  • SEGGER Embedded Studio
  • Nordic SDK15.2

printf / scanf

floatは標準では使えなくなっている。

「Project」-「Options...」で「Common」を選び、左側の上下矢印でSolutionのOptionにします。「Code」-「Printf・Scanf」の「Printf Floating Point Supported」を「No」から変更します。

image

この設定をした後ビルドしようとすると下記のエラーが出ますが「OK」とします。

image

NRF_LOG_INFO

        NRF_LOG_INFO("TWI ACC XYZ:  %f %f %f.", accel_X,accel_Y,accel_Z);

としたら、値が0で出力されました。ここでfloatを使うには、上記printf/scanfとは別のやりかたが必要になります。

        NRF_LOG_INFO("TWI ACC Float accel XYZ: " NRF_LOG_FLOAT_MARKER "\r\n", NRF_LOG_FLOAT(accel_X));

これでOK.

ちなみに、以下のようにすると1行に2つの float を表示できましたが、

        NRF_LOG_INFO("TWI ACC Float accel XYZ: " NRF_LOG_FLOAT_MARKER " "  NRF_LOG_FLOAT_MARKER,  NRF_LOG_FLOAT(accel_X),NRF_LOG_FLOAT(accel_Y));

同様にして 3つの float を含ませるとコンパイルできませんでした。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away