ESP32学习笔记-用中断的方式检测按钮触发

写在前面

今天看 中断 的示例代码,偶有心得,记录一下。

外部中断函数

attachInterrupt( pin,function,mode )

pin: 外部中断引脚

function : 外部中断回调函数

mode : 有5种外部中断模式,见下表:

中断触发模式说明
RISING上升沿触发
FALLING下降沿触发
CHANGE电平变化触发
ONLOW低电平触发
ONHIGH高电平触发
  • 关闭引脚中断 detchInterrupt(pin),无返回值。

测试代码

//加载库
#include <Arduino.h>

//定义按钮结构体
struct Button{
    const uint8_t PIN;   //定义按钮引脚
    bool pressed;        //定义按钮状态
};

//初始化按钮
Button button = {27,false};  //使用板载按钮

//中断处理函数
void ARDUINO_ISR_ATTR isr()
{
  button.pressed = true;
}

void setup()
{
  //开启串口
  Serial.begin(115200);
  //设置按钮为上拉输入模式
  pinMode(button.PIN, INPUT_PULLUP);   
  //注册中断函数,设置触发方式为下降沿触发
  attachInterrupt(button.PIN, isr, FALLING);    
}

void loop()
{
  BT();
}

void BT()
{
  if (button.pressed)
  {
    //防抖
    delay(5);
    //执行动作
    Serial.println("Button activated !");
    //重置标志位
    button.pressed = false;
  }
}

测试结果

参考

DFR0654_FireBeetle_Board_ESP32_E (dfrobot.com.cn)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值