#include <Arduino.h>
/*ESP32所有GPIO都可以用作外部中断引脚*/
#define LED_1 2 // led灯输出引脚
#define CF 5 // 中断触发引脚
/*触发方式
1.RISING(上升沿触发)
2.FALLING(下降沿触发)
3.CHANGE(电平变化触发)
4.ONLOW(低电平触发)
5.ONHIGH(高电平触发)
*/
// attachInterrupt(); //设置中断 三个参数为(中断触发引脚,中断函数,触发方式)
// detachInterrupt(); //关闭中断函数 一个参数(中断引脚)
int num = 0; // 统计中断触发次数
bool bzw = false; // 标志位为假
//=======================led控制函数===============================
void led_KZ()
{
if (bzw) //循环判断标志位真假 如果标志位为真执行内部代码
{
num++;
Serial.printf("触发次数:%d", num);
Serial.println();
digitalWrite(LED_1, !digitalRead(LED_1));
bzw = false; // 把标志位赋值为假
}
}
// =====================中断执行函数================================
void ZD_HS()
{
bzw = true; // 如果中断触发,标志位赋值为真。
}
// =====================初始化函数==================================
void csh()
{
Serial.begin(115200);
pinMode(LED_1, OUTPUT);
pinMode(CF, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(CF), ZD_HS, ONLOW); // 三个参数为(中断触发引脚,中断执行函数,触发方式)
}
void setup()
{
csh();
}
void loop()
{
led_KZ();
}
platformio+esp32+外部中断
于 2023-12-17 20:35:20 首次发布