フォト
2025年4月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ

« 次はSTM32ボードを積極的に使ていきたい(12) - 内部RTCの利用 | トップページ | 次はSTM32ボードを積極的に使ていきたい(13) - グラフィック液晶 »

2017年4月 4日 (火)

Arduino IDEでのchar型の変数の振舞

最近のArduino IDEでは従来のAVRマイコンほ他に、ARM系のボードもサポートしています。
スケッチもある程度、他のマイコンボードへの流用が出来ます。

私もAVR系のArduino UnoのスケッチをSTM32のボードに流用したりするのですが、

動作が異なる不可解な現象が発生し、ちょっとハマりました。

色々と突き詰めていくと、
AVRマイコンとARMマイコンではchar型の扱いが異なることが判明しました。
次のスケッチはchar型の変数aに-1を格納して表示する例です。
void setup() {
  Serial.begin(115200);

  char a;
  a= -1;
  Serial.print("a=");
  Serial.println(a,DEC);
  Serial.print("-1=");
  Serial.println(-1,DEC);

}

void loop() {

}

Arduino UNOの実行結果   Arduino Duo、M0、Bulle Pillボードの実行結果

Arduino          Arduinom0

if 文判定でも差異は明確に現れました。

まあ、char型の変数にマイナス値を使うようなプログラムはあまりないですが、
先日、ゲームの移植でちょっとハマってしまいました。

同じ開発環境でこの不統一はちょっとやめてほしいなぁ

char型についてはちょっと気を付ける必要があります。
私は、int8_t、uint8_tとC99的に記述しています。

« 次はSTM32ボードを積極的に使ていきたい(12) - 内部RTCの利用 | トップページ | 次はSTM32ボードを積極的に使ていきたい(13) - グラフィック液晶 »

arduino」カテゴリの記事

ARM」カテゴリの記事

STM32」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Arduino IDEでのchar型の変数の振舞:

« 次はSTM32ボードを積極的に使ていきたい(12) - 内部RTCの利用 | トップページ | 次はSTM32ボードを積極的に使ていきたい(13) - グラフィック液晶 »