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()
{
}

 

posted @ 2022-05-30 18:01  grey_electron  阅读(1541)  评论(0编辑  收藏  举报