从PROGMEM到Arduino的闪存
我正试图得到一些帮助,因为我正在将其他人的代码(使用PROGMEM)移动到我的闪存中 拜访 因此,以下是我的问题: 这是原始代码段:从PROGMEM到Arduino的闪存,arduino,avr,Arduino,Avr,我正试图得到一些帮助,因为我正在将其他人的代码(使用PROGMEM)移动到我的闪存中 拜访 因此,以下是我的问题: 这是原始代码段: prog_uint8_t Image[ImageColumns][LEDEights] PROGMEM = {{ B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111 } , { B11111111, B1
prog_uint8_t Image[ImageColumns][LEDEights] PROGMEM = {{
B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111,
B11111111 }
, {
B11111111, B10110111, B10111001, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111 }};
这是我修改后的代码:
const int Image[ImageColumns][LEDEights] = {};
我试着用别人的笔记本电脑来编译它,然后它真的运行了,但我注意到并了解到,这个程序是不可能链接出来的。我的修订正确吗?>
我不能完全说整个代码都能正常工作,因为:(我知道这与AVR-GCC bla bla bla progmem有关,对吗?我刚才刚刚读了一分钟。)
代码:
prog_uint8_t imageEights=pgm_read_字节(&(Image[列][8])
如果这不起作用,那么如何从SRAM读取字节呢?您的问题不是很清楚。如果您只想从使用PROGMEM切换到使用现有代码的闪存,那么您所拥有的将非常接近-除非您正在将该变量初始化为空数组。 您是正确的,您不能在运行时更改PROGMEM 这项工作:
int image[][9]= {
{
B11111111,
B11111111,
B11111111,
B11111111,
B11111111,
B11111111,
B11111111,
B11111111,
B11111111 }
,
{
B11111111,
B10110111,
B10111001,
B11111111,
B11111111,
B11111111,
B11111111,
B11111111,
B11111111 }
};
使用PROGMEM意味着数据驻留在闪存中。你可能是想把数据放到SRAM中。然而,也许代码的作者有一个很好的理由将数据放入闪存,因为SRAM非常有限?现有代码有什么问题?你为什么要修改它?它改善了什么吗?