タグ付けされた質問 「pointer」

2
Arduinoの関数ポインター割り当てはアトミックですか?
次のスニペットは、TimerOneライブラリのソースコードからの抜粋です。 // TimerOne.h: void (*isrCallback)(); // TimerOne.cpp: ISR(TIMER1_OVF_vect) // interrupt service routine that wraps a user defined function supplied by attachInterrupt { Timer1.isrCallback(); } // TimerOne.cpp: void TimerOne::attachInterrupt(void (*isr)(), long microseconds) { if(microseconds > 0) setPeriod(microseconds); isrCallback = isr; // register the user's callback with the real ISR TIMSK1 = …

2
PROGMEMで配列の代わりにポインターを使用できないのはなぜですか?
現在、一部のライブラリを変更して、プロジェクトでSRAMが不足しないように、文字列の格納にRAMではなくフラッシュを使用するようにしています。 ライブラリの一部の文字列は、次のように宣言されています。 const char *testStringA = "ABC"; これは、私がこれを通常行う方法とは異なります。 const char testStringB[] = "DEF"; ただし、これら2つはconstと宣言され、宣言で初期化された場合は同等であると思います。どちらもコードで正常に動作します。 これらをフラッシュに移動しようとしました: const prog_char *testStringC PROGMEM = "GHI"; その後、これが機能しないことがわかりました。印刷されたとき、それはゴブルデコックを生産していました。 ただし、次の一般的なパターンに従います。 const prog_char testStringD[] PROGMEM = "JKL"; 正常に動作します。 私は分解で見ることができます: 00000068 <testStringC>: 68: 04 01 .. 0000006a <_ZL11testStringD>: 6a: 4a 4b 4c 00 JKL. そのため、ポインターがクリアされ、PROGMEMによって文字列/配列が初期化されなくなります。 どうしてこれなの? コード例: #include <avr/pgmspace.h> …
11 progmem  pointer 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.