我正在使用TimerOne 库,代码如下所示:
#include <TimerOne.h>
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
Serial.println();
Timer1.initialize(1000000); // set a timer of length 1000000 microseconds
Timer1.attachInterrupt(timerIsr); // attach the service routine here
}
void loop() {
Serial.println(millis());
}
void timerIsr() {
Serial.print("FROM Time1: ");
Serial.println(millis());
}
问题是,在一些循环之后(当循环()的毫秒返回 930 时),arduino 停止
我认为问题在于,当 arduino 运行循环并在串行端口中写入时,ISR 例程也在写入。我怎么解决这个问题?
我尝试改变:
Serial.print("FROM Time1: ");
Serial.println(millis());
经过:
digitalWrite(13, !digitalRead(13));
而且工作正常,我认为arduino的串行库在使用中断时有一些问题,有可能吗?
有任何方法可以在某些代码块中阻止 arduino,我尝试使用原子但没有用。
我正在使用 Arduino UNO (ATmega328)