Arduino nano:内存稳定性问题

时间:2016-07-21 07:23:10

标签: c arduino

目前,我正在使用 Arduino nano 。当我在Arduino IDE中编译我的c代码时,我得到了以下错误。

enter image description here

程序上传成功并且工作正常,那么这个错误背后的原因是什么?它真的会影响arduino nano的性能吗?

4 个答案:

答案 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%使用开始,您会收到警告。实际行为取决于。