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:下降沿,引脚电平从⾼变为低时触发中断。
返回值:⽆;
nevertheless
2.detachInterrupt()
该功能⽤于禁⽤指定GPIO引脚上的中断。
vikas
mirandalambert 函数: detachInterrupt(pin)
参数:
pin:要禁⽤的中断的GPIO引脚。
返回值:⽆;chow
3.digitalPinToInterrupt()朱泰祺
该功能⽤于获取指定GPIO引脚的中断号。toilets
函数: digitalPinToInterrupt(pin)
参数:
pin:要获取中断号的GPIO引脚。
例⼦
将NodeMcu的D2引脚设置为上升沿中断。在D2上外接⼀个按键,按键通过电阻下拉到地。当发⽣中断的时候,我们在串⼝监视器上打印“Hello ESP8266”。
/**
* 功能描述:ESP8266中断演⽰
*/
void tup() {
Serial.begin(115200);//设置串⼝波特率
attachInterrupt(digitalPinToInterrupt(D2), InterruptFunc, RISING);//设置中断号、响应函数、触发⽅式
}
void loop() {
beegees}
/**
* 中断响应函数
歌舞青春片尾曲*/
ICACHE_RAM_ATTR void InterruptFunc(){
Serial.println("Hello ESP8266");
}