1

我正在尝试使用库 Due Timer 读取速度为 10KHz 的模拟输入 (A0),但是,当我增加它崩溃的向量的值时,目标是在 FFT 分析中使用该向量与 5000大小向量。我曾尝试直接使用 SAM3X83 定时器,但我遇到了同样的问题。这个问题让我发疯了!

请,我会很感激任何帮助。谢谢。

#include <DueTimer.h>

int v[5000];

void setup(){ 

  Serial.begin(9600);

  Timer3.attachInterrupt(Read);

  Timer3.start(100); 

  analogReadResolution(12);

}

void loop(){}

void display(){  

  for(int j=0; j<5000; j++){ 

  Serial.println(v[j]); 

  }

}

int i=0;

void Read(){ 

  v[i]=analogRead(A0);

  i++;

  if (i>=5000){

    i=0;

    Timer3.stop();     

    }
}
4

1 回答 1

0

如果你使用 DutTimer 你必须使用 volatile 变量

volatile 是一个被称为变量限定符的关键字,它通常用在变量的数据类型之前,以修改编译器和后续程序处理变量的方式。

声明变量 volatile 是对编译器的指令。编译器是将您的 C/C++ 代码翻译成机器代码的软件,机器代码是 Arduino 中 Atmega 芯片的真实指令。关联

于 2018-09-27T21:15:08.450 回答