在c ++中使用内存

时间:2013-08-28 09:08:53

标签: c++ arrays atmel

我不确定如何提出这个问题,但在这里:

  1. 在使用c ++编写Atmel MCU时,我倾向于将“程序”变量和“用户”变量混合在同一个数据存储器中。哪个是时间麻烦,因为我想制作一些可以加载或保存的预设。并且我不希望保存“程序”变量,因为程序将根据“用户”值生成正确的值。通常的做法是在记忆中分开吗?例如。 PGM-Memory中的timercounter,DATA-memory中的thresholdByUser?

  2. 在我的程序中,我已经创建了几个不同的函数,它们都有自己的用户变量集。 例如:设置有5个用户变量,生成器有6个用户变量等... 你会制作一个大数组,然后将#define settingsgeneratorSpeed 1, #define settingsBacklight 2作为地方,所以你可以这样称呼它们:Array[generatorSpeed], Array[settingsBacklight]或者你仍然可以将它拆分并使用struct orso来收集它们吗?

  3. 使用STK500上的ATMEGA644处理atmelstudio 4.0。

    感谢您提供的所有帮助!

2 个答案:

答案 0 :(得分:1)

假设您正在使用AT(X)Mega,在提到Atmel MCU时:IIRC,它取决于您使用的是哪个编译器套件。使用gcc,如果你有类似静态int的东西,它将转到PGM并在程序运行时复制到RAM。因此,如果您希望变量不在PGM内存中,则必须使它们成为堆栈或堆变量。常量和静态将始终存在于两者中。如果你不想只有PGM常数,你可以指定它,但这需要特殊的读操作。

答案 1 :(得分:0)

对于问题2,我使用const int& settingX = array[Xoffset]而不是定义。但是这假设需要迭代数组,否则我只需要定义单独的变量。