我不确定如何提出这个问题,但这里是:
当使用 C++ 在我的 Atmel MCU 上编程时,我倾向于在同一个数据存储器中混合“程序”变量和“用户”变量。这在时间上很麻烦,因为我想制作一些可以加载或保存的预设。而且我不想保存“程序”变量,因为程序将根据“用户”值生成正确的值。在内存中拆分它是常见的做法吗?例如。 PGM 内存中的定时器计数器,数据内存中的 thresholdByUser?
在我的程序中,我制作了几个不同的函数,它们都有自己的一组用户变量。 例如:设置有 5 个用户变量,生成器有 6 个用户变量等... 你会制作 1 个大数组,然后将
#define settingsgeneratorSpeed 1、#define settingsBacklight 2
作为位置,这样你就可以这样调用它们:Array[generatorSpeed]、Array[settingsBacklight]
还是您仍会将其拆分并使用 struct orso 收集它们?
在 STK500 上使用 ATMEGA644 开发 atmelstudio 4.0。
感谢您提供的所有帮助!
最佳答案
假设您使用的是 AT(X)Mega,当提到 Atmel MCU 时:IIRC 这取决于您使用的是哪个编译器套件。使用 gcc,如果你有类似 static int 的东西,它将转到 PGM,并在程序运行时复制到 RAM。因此,如果您希望您的变量不在 PGM 内存中,则必须使它们成为堆栈或堆变量。常量和静态变量将始终存在于两者中。如果您不想只有 PGM 常量,您可以指定它,但这需要特殊的读取操作。
关于c++ - c++中内存的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18483692/