介紹
中斷是在連續性流中隨機發生的事件。這就像您在忙於某些工作時打來的電話,並根據呼叫優先級來決定是參加還是忽略它。
基於 NodeMCU 的 ESP8266 在其 GPIO 引腳上具有中斷功能。此功能在 NodeMCU 開發套件的 D0-D8 引腳上可用。
通過 Arduino 中斷函數(即attachInterrupt、detachInterrupt )支持 GPIO 引腳中斷。
中斷可以連接到任何 GPIO 引腳,D0/GPIO16 引腳除外。支持標準 Arduino 中斷類型,即 CHANGE、RISING、FALLING。
NodeMCU 的 Arduino 中斷功能
讓我們看看用於在 Arduino IDE 中為 NodeMCU 套件設置中斷的函數。
附加中斷()
此函數用於在指定引腳上附加中斷。
句法:attachInterrupt(pin, ISR(callback function), interrupt type/mode);
參數:
pin
:要設置中斷的引腳號。
ISR (callback function)
:中斷發生時調用的ISR;這個函數不接受任何參數並且什麼也不返回。
Interrupt type/mode
:它定義了何時應該觸發中斷。
CHANGE:用於在引腳值更改時觸發中斷。
RISING:用於在引腳從低電平變為高電平時觸發中斷。
FALLING:用於在引腳從高電平變為低電平時觸發中斷。
返回:空
分離中斷()
該函數用於禁用指定 GPIO 引腳上的中斷。
句法: detachInterrupt(pin)
參數:
pin
:要禁用的中斷的 GPIO 引腳。
返回:空
例子
讓我們編寫一個 Arduino 草圖,在 NodeMCU 的第二個 GPIO 引腳上設置一個上升沿中斷。在這裡,我們在第 2 個 GPIO 引腳上連接一個開關,以在其上生成一個上升沿中斷。此外,我們將在串行監視器窗口上打印發生中斷的時間(以毫秒為單位)。
用於 GPIO 中斷的 Arduino 草圖
uint8_t GPIO_Pin = D2;
void setup() {
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(GPIO_Pin), IntCallback, RISING);
}
void loop() {
}
void IntCallback(){
Serial.print("Stamp(ms): ");
Serial.println(millis());
}
輸出窗口
資料來源:https://www.electronicwings.com/nodemcu/nodemcu-gpio-interrupts-with-arduino-ide
沒有留言:
張貼留言