ESP32定时器中断
利用定时器中断实现每300ms蜂鸣器鸣叫一次。
/*电平状态标志位*/ volatile byte BEEP_STATE = LOW; /*定义定时器指针*/ hw_timer_t *timer = NULL; /*中断函数*/ void IRAM_ATTR InterruptEvent() { digitalWrite(beep, BEEP_STATE); BEEP_STATE = !BEEP_STATE; Serial.println("BEEP!"); } void setup() { Serial.begin(115200); /*定时器部分*/ timer = timerBegin(0, 80, true); //定时器初始化--80Mhz分频80,则时间单位为1Mhz即1us即10-6s,下面的300000us即300ms。 timerAttachInterrupt(timer, &InterruptEvent, true); //中断绑定定时器 timerAlarmWrite(timer, 300000, true); //300ms进入一次中断--注意这里不能用另一个函数:timerWrite(timer,300000);实测用这个函数不行。 timerAlarmEnable(timer); //使能定时器 } void loop() { }