十四,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 的中断,我将使用这两个功能:

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)

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

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

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

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

 

LOW            低电平触发

CHANGE        电平变化,高电平变低电平、低电平变高电平

RISING          上升沿触发

FALLING        下降沿触发

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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
ESP-32

十三,ESP32使用TCP/IP

2025-4-16 13:45:11

ESP-32

十五,ESP32 连接到WIFi网络

2025-4-16 13:50:45

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