zoukankan      html  css  js  c++  java
  • ESP8266 中断

    D0(GPIO16) 只能用作gpio读写,不支持中断,i2c/pwm/ow

    中断可以理解为在正常的运行流程中突然插入的操作,这就像你在忙于工作的时候,领导突然叫你去买个下午茶,然后你就去把下午茶买回来,再继续工作。基于ESP8266的NodeMcu的数字IO的中断功能是通过attachInterrupt,detachInterrupt函数所支持的。除了D0/GPIO16,中断可以绑定到任意GPIO的引脚上。所支持的标准中断类型有:CHANGE(改变沿,电平从低到高或者从高到低)、RISING(上升沿,电平从低到高)、FALLING(下降沿,电平从高到低)。
        首先,我们来看看Arduino IDE中用于中断的函数。
        1.attachInterrupt()
        该功能用于在将指定引脚设置为响应中断。
        函数: attachInterrupt(pin, function, mode);
        参数:
            pin:要设置中断编号,注意,这里不是引脚编号。
            function:中断发生时运行的函数, 这个函数不带任何参数,不返回任何内容。
            Interrupt type/mode:它定义中断被触发的条件方式。
                CHANGE:改变沿,引脚电平从低变为高或者从高变为低时触发中断。
                RISING:上升沿,引脚电平从低变为高时触发中断。
                FALLING:下降沿,引脚电平从高变为低时触发中断。
        返回值: 无;

        2.detachInterrupt()
        该功能用于禁用指定GPIO引脚上的中断。
        函数: detachInterrupt(pin)
        参数:
            pin:要禁用的中断的GPIO引脚。
        返回值: 无;

        3.digitalPinToInterrupt()
        该功能用于获取指定GPIO引脚的中断号。
        函数: digitalPinToInterrupt(pin)
        参数:
            pin:要获取中断号的GPIO引脚。

    例子
        将NodeMcu的D2引脚设置为上升沿中断。在D2上外接一个按键,按键通过电阻下拉到地。当发生中断的时候,我们在串口监视器上打印“Hello ESP8266”。

    /**
     * 功能描述:ESP8266中断演示
     */ 
    void setup() {
     Serial.begin(115200);//设置串口波特率
     attachInterrupt(digitalPinToInterrupt(D2), InterruptFunc, RISING);//设置中断号、响应函数、触发方式
    }
     
    void loop() {
    }
    
    /**
     * 中断响应函数
     */ 
    ICACHE_RAM_ATTR void InterruptFunc(){
     Serial.println("Hello ESP8266");
    }

    参考

     
  • 相关阅读:
    [YNOI2017][bzoj4811][luogu3613] 由乃的OJ/睡觉困难综合症 [压位+树链剖分+线段树]
    [bzoj3270] 博物馆 [期望+高斯消元]
    [bzoj4372] 烁烁的游戏 [动态点分治+线段树+容斥原理]
    [Codeforces438E][bzoj3625] 小朋友和二叉树 [多项式求逆+多项式开根]
    [bzoj3813] 奇数国 [线段树+欧拉函数]
    [BZOJ4205][FJ2015集训] 卡牌配对 [建图+最大流]
    Git常见问题解决办法
    电脑常用快捷键
    egret.Shape渲染集合图形
    TypeScript语法学习--变量的声明
  • 原文地址:https://www.cnblogs.com/dengziqi/p/14462443.html
Copyright © 2011-2022 走看看