十四,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. 中庸至道

    ?

  9. wisher

    hao

  10. moyu

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

  11. mioosk

    谢谢楼主,很有帮助

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