Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PROGMEM到Arduino的闪存_Arduino_Avr - Fatal编程技术网

从PROGMEM到Arduino的闪存

从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

我正试图得到一些帮助,因为我正在将其他人的代码(使用PROGMEM)移动到我的闪存中

拜访

因此,以下是我的问题: 这是原始代码段:

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非常有限?现有代码有什么问题?你为什么要修改它?它改善了什么吗?