2024/04/24「多機能ファイラーAs/Rの魅力と活用法」を出版、KView32公開

PROGMEMの使い方

ESP32

PROGMEMは変数の修飾子で、データをSRAMではなく、ROMエリア(フラッシュメモリ,プログラムメモリ)に配置します。

RAMの残りの容量が少なくなった時には、ROMにエリアに移せる変数がないか検討してみてください。

ESP32では、const や constexpr 指定子 を付けても、ROMエリアに配置されるようです。

ESP32 上の PROGMEM は、実際にはコードの互換性のために保持されている単なるダミーとの事です。

On an ESP32: Is using the F()Macro as pointless as using PROGMEM?

書式

PROGMEMは変数の修飾子なので、どこに記述するかの明確な規則はないようです。

コンパイラやそのバージョンによっては、正常に動作しない事もあるようですので、その場合は、記述する場所を変えてみてください。

const dataType variableName[] PROGMEM = {}; // use this form
const PROGMEM dataType variableName[] = {}; // or this one
const dataType PROGMEM variableName[] = {}; // not this one
  • dataType 任意の変数のデータ型。
  • variableName データの配列の名前。

参考URL

以下のURLも参考にしてください。

タイトルとURLをコピーしました