外部中断是单片机实时地处理外部事件的一种内部机制。当外部事件发生后,单片机判断外部事件是否符合条件,如果符合外部中断条件,则停止CPU正在执行的程序,转而进行中断事件的处理;中断处理完毕后,又返回被中断的程序处,继续执行。
目的
熟悉 ESP32 外部中断,利用外部中断实现通过按钮控制 LED 的亮灭
配套介绍
编写工具: vscode + platformIO 安装教程
硬件: bpibit
主要函数
-
attachInterrupt(pin, intRoutine, mode)
这个函数主要用于建立外部中断
参数 | 功能 |
---|---|
pin |
外部事件对应的引脚 |
intRoutine |
处理外部事件的函数名 |
mode |
中断模式 |
内置在 arduino 的中断模式有以下种:
定义名 | 作用 |
---|---|
RISING | 上升沿触发 |
FALLING | 下降沿触发 |
CHANGE | 边缘触发 |
ONLOW | 低电平触发 |
ONHIGH | 高电平触发 |
使用示例
#include "Arduino.h"
volatile boolean RunBuzzer = true;
const int led = 18;
const int button = 35;
// 中断函数
void warning()
{
RunBuzzer = !RunBuzzer;
}
void setup()
{
// 初始化外部中断、pin
// 当按键按下时,引脚 34 输入的电平由高变低,触发中断函数warning
pinMode(led, OUTPUT);
pinMode(button, INPUT);
attachInterrupt(button, warning, FALLING); // 设置外部中断
}
void loop()
{
if (RunBuzzer)
{
digitalWrite(led, HIGH);
}
else
{
digitalWrite(led, LOW);
}
}