目前,我正在使用 Arduino nano 。当我在Arduino IDE中编译我的c
代码时,我得到了以下错误。
程序上传成功并且工作正常,那么这个错误背后的原因是什么?它真的会影响arduino nano的性能吗?
答案 0 :(得分:2)
出现此警告是因为编译器不知道程序应分配多少动态内存。请在动态分配,本地变量分配...
中查看您的程序它真的会影响arduino nano的性能吗?
就像它说“可能会出现稳定性问题”。我过去确实面对过这个问题,而且项目有时滞后。
答案 1 :(得分:1)
int freeRam () {
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
在您职能的最深层或您想要的任何地方调用此函数,例如
Serial.println(freeRam());。
并且不要使用malloc()或c ++ new来避免"稳定性问题",因为在动态内存分配中没有异常处理或其他错误检查。
答案 2 :(得分:0)
它真的会影响arduino nano的性能吗?
我在编译时遇到了相同的错误,是警告,因为您说上传成功完成,如果上传成功则没有性能问题。如果要清除此错误,则需要减少代码的内存使用量
只需优化代码,尽可能使用局部变量。如果你有常量,请改用#define
,
将重复调用组合成一个函数。
答案 3 :(得分:0)
如上所述,这只是一个警告,但根据实际的内存使用情况,您可能会出现不稳定的行为。
我最近做的一个小项目(https://releasetheinnergeek.wordpress.com/2018/05/16/minimalist-lidar/),根据剩余的动态内存量,观察到不同的行为,例如:伺服未操作,屏幕无法正确显示和/或未激活的激光读数。
从70%使用开始,您会收到警告。实际行为取决于。