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");
}

參考

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM