platformio+esp32+外部中断

#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();
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君零渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值