首页 > 解决方案 > 如何从嵌套的 PROGMEM 数组中读取 uint32_t 值?

问题描述

我有一个 16x16 的 uint32_t 值矩阵数组:const uint32_t sprites[][16][16] PROGMEM = { ... };我试图用 读出这些值pgm_read_dword(sprites + (submode * 256 + row * 16 + column) * sizeof(uint32_t)),但我对地址数学的工作原理感到困惑。在此,submode映射到矩阵索引。submode, row, 和column都被声明为uint8_t, 以防万一它有帮助。

如何正确计算地址pgm_read_dword

甚至我pgm_read_dword想如何读出uint32_t值?我立即将输出传递给期望该类型的方法。

标签: c++arduino

解决方案


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


推荐阅读