十四,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)

触发中断的模式包括以下5种

/*******************************************************
          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 中使用中断

给TA打赏
共{{data.count}}人
人已打赏
ESP32ESP32-基础

十三,ESP32使用TCP/IP

2018-9-13 23:18:54

ESP32ESP32-基础

十五,ESP32 连接到WIFi网络

2018-9-16 23:10:48

12 条回复 A文章作者 M管理员
  1. 逐光者

    挺好的,很有帮助

  2. 叁瑟斯Rhy

    谢谢楼主,很有用!

  3. 漂泊的狗

    非常好!!

  4. 老鐘

    想學,謝謝

  5. Cén

    非常好

  6. xinfan

    很好的教程

  7. 逯逯

    nb

  8. wisher

    hao

  9. moyu

    不需要进行按键消抖嘛,我这不消抖的话,貌似会有点问题

  10. mioosk

    谢谢楼主,很有帮助

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
'); })();