(由于大多数Arduino板卡上的内存有限,我有时会遇到使用有效C/C++代码的问题,所以这个问题特别关注任何问题在使用Arduino上的结构。)澄清在Arduino中使用结构和在PROGMEM中存储结构
我见过example code of using structs in Arduino但没有讨论内存需求。
- 结构的大小只是它的字段的数据类型的总和吗?
- 在PROGMEM中存储结构是一个选项吗?有访问速度问题吗?
- 结构体的字段是否可写(例如,在
s1.LED1.state = 0;
以下的例子)(当然,如果存储在PROGMEM中则不会)。 - 我可以定义一个结构的字段作为另一个(不同类型)结构?
- 是否有可能使用
for..in
或索引遍历结构?
我的用例是我有64个由MAX7219芯片驱动的LED。由于物理布线布局的要求,为了使编程更容易/更一致,使用结构更加合理地组织LED顺序将会很方便。
typedef struct {
byte row : 6;
byte col : 128;
byte state : 1;
} LED;
typedef struct {
LED LED1 : {1,1,1};
LED LED2 : {1,2,1};
LED LED3 : {1,4,1};
LED LED4 : {1,8,1};
LED LED5 : {1,16,1};
LED LED6 : {1,32,1};
LED LED7 : {1,64,1};
LED LED8 : {1,128,1};
} LED_SECTION;
LED_SECTION s1;
s1.LED1.row = 1;
s1.LED1.state = 0;
有趣的是,从来没有看到“宽”符号对于结构:)如果'byte'不'LED'在'LED_SECTION':将[]和的cols点后,像这样被refered到结构? – leppie 2013-05-03 15:04:48
另外,128字节的“字节”?这是什么疯狂? – leppie 2013-05-03 15:06:43
@leppie - 是的。复制/粘贴错误。感谢您指出 – 2013-05-03 16:21:19