esp32 attachInterrupt中断事件

通过轻触按键学习了pinMode的INPUT模式,还有attachInterrupt中断事件,简单理解中断事件,就是它是比循环更重要的事,所以要中断循环先处理中断事件,完事后再处理循环.只是不知道这个下降沿触发是如何形成的.还有这个 flag = !flag; 是赋值语句还是判断语句,如果是赋值语句它是在哪一步被赋值的呢,没见过这种写法.,(刚刚请教了一下其他人,得到的结果是 flag = !flag 为假 = 非假,是在keyPin被触发后,在attachInterrupt(keyPin,ledshow,FALLING);方法中调用ledshow的过程中被赋值的)

/**********************************/
const int keyPin = 17;  // 设置轻触按键引脚为17号
const int led1Pin = 25;  //设置1号led灯的控制引脚为25号
const int led2Pin = 26;  //设置2号led灯的控制引脚为26号
boolean flag = false;   // 状态标志位
/**********************************/
void setup()
{
  pinMode(keyPin,INPUT);          //初始化轻触按键引脚为输入
  pinMode(led1Pin,OUTPUT);        //初始化1号led灯的控制引脚为输出
  pinMode(led2Pin,OUTPUT);        //初始化2号led灯的控制引脚为输出
  attachInterrupt(keyPin,ledshow,FALLING); // 初始化轻触按键引脚中断程序,下降沿触发(按下到底触发)
}

void loop()
{
  //由于初始状态flag为假,,所以刷完系统执行else 1号led灯关 2号led灯开
  if(flag)                      
  {
    digitalWrite(led1Pin,HIGH); // 设置1号led灯的控制引脚为开启
    digitalWrite(led2Pin,LOW); // 设置2号led灯的控制引脚为关闭
  }
  else
  {
    digitalWrite(led1Pin,LOW); // 设置1号led灯的控制引脚为关闭
    digitalWrite(led2Pin,HIGH); // 设置2号led灯的控制引脚为开启
  }
}
/************************************/
void ledshow()		
{
  flag = !flag;             // 判断轻触按键是否触发了
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值