外部中斷:
基於ESP8266的NodeMcu的數字IO的中斷功能是經過attachInterrupt,detachInterrupt函數所支持的。除了D0/GPIO16,中斷能夠綁定到任意GPIO的引腳上【D0-D10】。所支持的標準中斷類型有:CHANGE(改變沿,電平從低到高或者從高到低)、RISING(上升沿,電平從低到高)、FALLING(降低沿,電平從高到低)
attachInterrupt(pin, function, mode); 設置觸發中斷的引腳git
pin:要設置中斷編號,注意,這裏不是引腳編號函數
function:中斷髮生時運行的函數, 這個函數不帶任何參數,不返回任何內容oop
Interrupt type/mode:它定義中斷被觸發的條件方式spa
CHANGE:改變沿,引腳電平從低變爲高或者從高變爲低時觸發中斷。
RISING:上升沿,引腳電平從低變爲高時觸發中斷。
FALLING:降低沿,引腳電平從高變爲低時觸發中斷code
返回值: 無blog
detachInterrupt(pin); 取消指定引腳的中斷it
pin:中斷號io
返回值: 無function
digitalPinToInterrupt(pin);獲取指定引腳的中斷號class
pin:要獲取中斷號的GPIO引腳
返回值: 中斷號
引腳對應的中斷號:
D1:5 D2:4 D4:2 D5:14 D6:12 D7:13 D8:15
例子一:
將NodeMcu的D2引腳設置爲上升沿中斷。在D2上外接一個按鍵,按鍵經過電阻下拉到地。當發生中斷的時候,咱們在串口監視器上打印「Hello ESP8266」
void setup() { Serial.begin(115200);//設置串口波特率 attachInterrupt(digitalPinToInterrupt(D2), InterruptFunc, RISING);//設置中斷號、響應函數、觸發方式 } void loop() { delay(2000); } void InterruptFunc(){ //中斷響應函數 Serial.println("Hello ESP8266"); }
不知道爲什麼串口打印的數據 不對 ???????????
天子驕龍