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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user