Add RepeatTimer example (#216)
This commit is contained in:
parent
95cb54cede
commit
a83dd5f2b5
60
libraries/ESP32/examples/Timer/RepeatTimer/RepeatTimer.ino
Normal file
60
libraries/ESP32/examples/Timer/RepeatTimer/RepeatTimer.ino
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
Repeat timer example
|
||||||
|
|
||||||
|
This example shows how to use hardware timer in ESP32. The timer calls onTimer
|
||||||
|
function every second. The timer can be stopped with button attached to PIN 0
|
||||||
|
(IO0).
|
||||||
|
|
||||||
|
This example code is in the public domain.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Stop button is attached to PIN 0 (IO0)
|
||||||
|
#define BTN_STOP_ALARM 0
|
||||||
|
|
||||||
|
hw_timer_t * timer = NULL;
|
||||||
|
|
||||||
|
void onTimer(){
|
||||||
|
static unsigned int counter = 1;
|
||||||
|
|
||||||
|
Serial.print("onTimer no. ");
|
||||||
|
Serial.print(counter);
|
||||||
|
Serial.print(" at ");
|
||||||
|
Serial.print(millis());
|
||||||
|
Serial.println(" ms");
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// Set BTN_STOP_ALARM to input mode
|
||||||
|
pinMode(BTN_STOP_ALARM, INPUT);
|
||||||
|
|
||||||
|
// Use 1st timer of 4 (counted from zero).
|
||||||
|
// Set 80 divider for prescaler (see ESP32 Technical Reference Manual for more
|
||||||
|
// info).
|
||||||
|
timer = timerBegin(0, 80, true);
|
||||||
|
|
||||||
|
// Attach onTimer function to our timer.
|
||||||
|
timerAttachInterrupt(timer, &onTimer, true);
|
||||||
|
|
||||||
|
// Set alarm to call onTimer function every second (value in microseconds).
|
||||||
|
// Repeat the alarm (third parameter)
|
||||||
|
timerAlarmWrite(timer, 1000000, true);
|
||||||
|
|
||||||
|
// Start an alarm
|
||||||
|
timerAlarmEnable(timer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// If button is pressed
|
||||||
|
if (digitalRead(BTN_STOP_ALARM) == LOW) {
|
||||||
|
// If timer is still running
|
||||||
|
if (timer) {
|
||||||
|
// Stop and free timer
|
||||||
|
timerEnd(timer);
|
||||||
|
timer = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user