【Arduino】 使用定时器中断(非库、精度更高)

虽然有很多库可以直接用,但是据说精度只有ms级;

按理来说最小时间间隔可以到0.016ms(即:65536 - 1)。

类似51程序中的定时器配置。

#define ledPin 13
int timer1_counter;
void setup() {
  pinMode(ledPin, OUTPUT);
  noInterrupts();
  TCCR1A = 0;
  TCCR1B = 0;
  //timer1_counter = 65536-(62500*0.5);  //0.5s 定时器中断
  timer1_counter = 34286;  //预加载timer1 65536-16Mhz/256/2Hz
  TCNT1 = timer1_counter;
  TCCR1B |= (1 << CS12);
  TIMSK1 |= (1<< TOIE1);
  interrupts();
 
}
ISR(TIMER1_OVF_vect) {
  TCNT1 = timer1_counter;
  digitalWrite(ledPin, digitalRead(ledPin)^1); 
}
void loop() {
  // put your main code here, to run repeatedly:
}



你可能感兴趣的:(arduino,arduino)