ESP32
ESP32 타이머 인터럽트 사용하기
달콤한숟가락
2024. 7. 22. 17:00
#include <Arduino.h>
#include "esp32-hal-timer.h"
// 타이머 포인터 변수 선언
hw_timer_t *timer = NULL;
volatile bool timerFlag = false;
// 타이머 인터럽트 서비스 루틴
void IRAM_ATTR onTimerISR() {
timerFlag = true; // 인터럽트 발생 플래그 설정
}
void setup() {
Serial.begin(115200); // 시리얼 통신 초기화
// 타이머 초기화: 주파수는 1MHz (1000000 Hz)
timer = timerBegin(1000000);
if (timer == NULL) {
Serial.println("Timer initialization failed!");
return;
}
// 타이머 인터럽트 서비스 루틴 연결
timerAttachInterrupt(timer, onTimerISR);
// 타이머 알람 설정: 1초마다 (1000000 마이크로초) 인터럽트 발생
timerAlarm(timer, 1000000, true, 0);
// 타이머 알람 활성화
timerStart(timer);
}
void loop() {
// 타이머 인터럽트 발생 시 처리
if (timerFlag) {
timerFlag = false;
Serial.println("Timer Interrupt Triggered!");
}
}