补充:micro(),做计时的,可以精确到微秒
uint32_t start1;
double s = 1;
double pi = 0;
double i = 1.0;
double n = 1.0;
double dt_err;
double dt;
void setup()
{
/* add setup code here */
Serial.begin(9600);
}
void loop()
{
/* add main program code here */
s = 1;
pi = 0;
i = 1.0;
n = 1.0;
Serial.println("--------pi--------");
start1 = micros();
dt_err = micros() - start1;
start1 = micros();
while (abs(i) >= 1e-6) {
pi += i;
n = n + 2;
s = -s;
i = s / n;
}
pi = 4 * pi;
dt = micros() - start1 - dt_err;
Serial.print("time = ");
Serial.print(dt/1000);
Serial.println("ms");
delay(5000);
}
(PS:具体源码已打包:
http://bbs.ickey.cn/community/forum-123-1.html)
年初micro()在各种ARM-M、ARM-A和x86-64平台上跑过。
当把圆周率精确到小数点后6位时,MiCOKit3165(基于stm32f411)需要大约5秒才能把结果算出来。
ARM-A的nano pi所用时间是0.05955秒。