十四,ESP32 中使用中断

1.简介

中断的概念:

  1. 中断发生 
  2. CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理
  3. 中断响应和中断服务 
  4. CPU暂时中断当前的工作,转去处理事件B
  5. 中断返回 

待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A 这一过程称为中断。

 本教程的演示非常简单。我们使用一个按钮连接到中断引脚。每次用户按下按钮,都会在ESP32上产生中断,通过切换LED来处理此中断。

二.元器件清单

  • ESP32开发板
  • 一个3mm的LED
  • 一个按键
  • 一个220的电阻
  • 导线若干
  • 一块面包板

三.电路图

连接:

[ESP32 GIO12 – BUTTON ] [ESP32 GIO14 – LED ] 

十四,ESP32 中使用中断
图:ESP32 的硬件连接图

四.代码设计

为了使用ESP32 的中断,我将使用这两个功能:

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)

PIN: 是需要连接中断的引脚

ISR:发生中断时要调用的函数

mode:是触发中断的模式 (CHANGE:引脚更改时触发,RISING:引脚从LOW变为HIGH)

/*******************************************************
          ESP32 使用中断
   功能:使用中断来实现LED的状态切换
   引脚: [ESP32 GIO12 - BUTTON] [ESP32 GIO14 - LED ]
   Designer: Code_Mouse
   Date:2018-9-16
 *******************************************************/
byte ledPin = 14;        //LED的引脚 
byte interruptPin = 12;  //中断引脚
volatile byte state = LOW;   //状态为低电平     

void setup() {
  pinMode(ledPin, OUTPUT); 
 
  pinMode(interruptPin, INPUT_PULLUP);//将中断的引脚设置为输入PULLUP模式
  attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);  //设置触发中断的模式和中断服务函数
}

void loop() {
}

//中断服务函数
void blink() {
  state = !state;
  digitalWrite(ledPin, state);
}

五.测试代码

要测试代码,只需使用Arduino IDE上传它。然后,您应该看到LED切换状态。以下就是实现的效果:

十四,ESP32 中使用中断
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论