嗯,这个问题就是这么说的。 我想做的是,每次启动微控制器时,都应该从保存的数据中获取一些数据并使用它。它不应该使用任何外部闪存芯片。 如果可能的话,请给出一些代码片段,以便我可以在AVR studio 4中使用它们。例如,如果我保存8个uint16_t数据,它应该将这些数据加载到uint16_t数组中。
感谢。
答案 0 :(得分:1)
如果您不需要以编程方式更新数据,则必须将数据刻录到芯片的程序存储器中,或者如果您需要读写支持,则应使用内置EPROM。
Pgmem例子:
#include <avr/pgmspace.h>
PROGMEM uint16_t data[] = { 0, 1, 2, 3 };
int main()
{
uint16_t x = pgm_read_word_near(data + 1); // access 2nd element
}
答案 1 :(得分:0)
您需要获取所用部件的数据表。像这样的微控制器通常至少包含闪存,有时还包含多组闪存,以允许不同的引导加载程序,同时可以轻松擦除整个闪存而不会影响另一个闪存。同样有些人有eeprom。这都是内部的,而不是外部的。 Esp,因为你说你需要以编程方式保存这应该工作(记住磨损闪光灯是多么容易,除非你需要,否则不要保存)。当您上电时,eeprom或flash将满足在那里获取该信息的要求,非易失性。以及能够以编程方式保存它。除了您显然还没有阅读过的数据表外,谷歌搜索还会找到一些关于如何执行此操作的示例,以及包含此信息的应用说明(您应该已阅读)。如果你正在寻找某种一次性可编程保险丝吹制的东西,可能有avr的OTP版本,你将不得不阅读有关如何编程该存储器的数据表,程序员参考和应用笔记,并应该告诉你是否OTP部件可以通过编程方式编写,也可以采用不同的方式编写。
数据的读取位于数据表的内存映射中,编写代码来读取这些地址。写作在数据表(程序员参考手册,用户指南,无论atmel调用它)中都有描述,网上有很多例子。
答案 2 :(得分:0)