Skip to content

Add RepeatTimer example #216

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 17, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions libraries/ESP32/examples/Timer/RepeatTimer/RepeatTimer.ino
Original file line number Diff line number Diff line change
@@ -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;
}
}
}