目录
1.简介
中断的概念:
- 中断发生
- CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理
- 中断响应和中断服务
- CPU暂时中断当前的工作,转去处理事件B
- 中断返回
待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A 这一过程称为中断。
本教程的演示非常简单。我们使用一个按钮连接到中断引脚。每次用户按下按钮,都会在ESP32上产生中断,通过切换LED来处理此中断。
二.元器件清单
- ESP32开发板
- 一个3mm的LED
- 一个按键
- 一个220的电阻
- 导线若干
- 一块面包板
三.电路图
连接:
[ESP32 GIO12 – BUTTON ]
[ESP32 GIO14 – LED ]
四.代码设计
为了使用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切换状态。以下就是实现的效果:
挺好的,很有帮助
谢谢楼主,很有用!
非常好!!
想學,謝謝
讚
非常好
很好的教程
nb
?
hao
不需要进行按键消抖嘛,我这不消抖的话,貌似会有点问题
谢谢楼主,很有帮助