Arduino的外部中断

Arduino的中断函数格式为attachInterrupt(interrput,function,mode)。

attachInterrupt函数用于设置外部中断,有3个参数,interrput表示中断源编号(中断号)、function表示中断处理函数,mode表示触发模式,它们的具体含义如下

中断号:可选0或者1,在UNO板上分别对应2和3号数字引脚。在不同的Arduino型号上位置也不同,只有外部中断发生在以下端口,Arduino才能捕获到。以下是常见的几种型号板子的外部中断编号和对应引脚标号。

中断源编号

int.0

int.1

int.2

int.3

int.4

int.5

UNO\Ethernet

2

3

 

 

 

 

Mega2560

2

3

21

20

19

18

Leonardo

3

2

0

1

 

 

Due

 所有IO口均可

Due板的每个IO均可以进行外部中断,中断号即所使用的中断引脚编号。

中断处理函数:指定中断的处理函数,是一段子程序,当中断发生时执行该子程序,其中参数值为函数的指针。

触发模式:有下列几种类型

LOW                  低电平触发
CHANGE            电平变化,高电平变低电平、低电平变高电平
RISING              上升沿触发
FALLING            下降沿触发
HIGH                 高电平触发(该中断模式仅适用于Arduino due)

如果不需要使用外部中断了,可以用中断分离函数detachInterrupt(interrupt )来取消这一中断设置。

Example Code   用外部中断实现LED的亮灭切换

const byte ledPin = 13;  //LED的引脚

const byte interruptPin = 2;  //中断源引脚,根据所用板子查表得到中断编号interrupt

volatile byte state = LOW; 

 

void setup()

{

  pinMode(ledPin, OUTPUT);

  pinMode(interruptPin, INPUT_PULLUP);

  attachInterrupt(interrupt, blink, CHANGE);

}

 

void loop()

{

  digitalWrite(ledPin, state);

}

 

void blink()

{

  state = !state;

}

猜你喜欢

转载自www.cnblogs.com/MyAutomation/p/9376290.html
今日推荐