如何从嵌套的 PROGMEM 数组中读取 uint32_t 值?

How do I read uint32_t values out of a nested PROGMEM array?

我有一个包含 uint32_t 值的 16x16 矩阵数组:const uint32_t sprites[][16][16] PROGMEM = { ... }; 我试图用 pgm_read_dword(sprites + (submode * 256 + row * 16 + column) * sizeof(uint32_t)) 读出这些值,但我转过头来对如何读出这些值感到困惑地址数学有效。在此,submode 映射到矩阵索引。 submoderowcolumn 都声明为 uint8_t,以防万一。

如何正确计算 pgm_read_dword 的地址?

pgm_read_dword连我想怎么读出uint32_t值?我立即将输出传递给需要该类型的方法。

根据评论中的 datafiddler,它就像调用 pgm_read_dword(&sprites[submode][row][column]) 并让编译器处理偏移量计算一样简单。