#include <Arduino.h>
#include <esp32-hal-timer.h>
#define LED1 25 // 保持使用 GPIO25,但需確認硬體接線
#define LED_BUILTIN 2
volatile bool state0 = false;
volatile bool state1 = false;
volatile byte counter = 0;
hw_timer_t *timer0 = NULL;
hw_timer_t *timer1 = NULL;
// 中斷函式必須明確標示參數為 void
void IRAM_ATTR onTimer0(void) {
state0 = !state0;
digitalWrite(LED_BUILTIN, state0);
}
void IRAM_ATTR onTimer1(void) {
state1 = !state1;
digitalWrite(LED1, state1);
counter++;
}
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(LED1, OUTPUT);
Serial.begin(115200);
timer0 = timerBegin(1); // 1Hz
timerAttachInterrupt(timer0, &onTimer0);
timerStart(timer0);
timer1 = timerBegin(2); // 2Hz
timerAttachInterrupt(timer1, &onTimer1);
timerStart(timer1);
Serial.println("計時器初始化完成");
}
void loop() {
static byte lastCounter = 0;
if (counter != lastCounter) {
Serial.print("Timer1 中斷次數: ");
Serial.println(counter);
lastCounter = counter;
}
}