Code: Untitled.cpp Select all
hw_timer_t * timer = NULL;
int counter = 10;
void setup() {
Serial.begin(115200);
timer = timerBegin(2, 80, true);
timerAttachInterrupt(timer, &onTimer, true);
timerAlarmWrite(timer, 500000, true); // Interrupt occurs every 500ms
timerAlarmEnable(timer);
}
void loop() {
Serial.println(counter);
delay(100);
}
void onTimer() {
if (counter == 0) {
timerAlarmDisable(timer);
} else {
counter = counter - 1;
}
}Code: Untitled.cpp Select all
hw_timer_t * timer = NULL;
int counter = 10;
boolean timer_off_flag = false;
void setup() {
Serial.begin(115200);
timer = timerBegin(2, 80, true);
timerAttachInterrupt(timer, &onTimer, true);
timerAlarmWrite(timer, 500000, true); // Interrupt occurs every 500ms
timerAlarmEnable(timer);
}
void loop() {
Serial.println(counter);
if (timer_off_flag == true) {
timerAlarmDisable(timer);
timer_off_flag = false;
}
delay(100);
}
void onTimer() {
if (counter == 0) {
timer_off_flag = true;
} else {
counter = counter - 1;
}
}