Fireduino 开源创意平台 立即购买

拥有双核Cortex-M3处理器,集成高质量音频Codec和WiFi模组,拥有良好的IOT扩展性能,完美兼容Arduino IDE和Arduino标准接口,并支持FireBlock图形化编程软件,是一款首选的编程启蒙教学平台,更是一款开源的创意原型平台。

Interrupts

更新时间:2017-08-08 阅读:2151

操作环境

   1. 操作系统 : Windows 7 Ultimate 64-bit 
   2. IDE : Arduino1.6.6

Interrupts()

说明

   重新启用中断(使用noInterrupts()命令后将被禁用)。
   中断允许一些重要任务在后台运行,默认状态是启用的。
   禁用中断后一些函数可能无法工作,并传入信息可能会被忽略。
   中断会稍微打乱代码的时间,但是在关键部分可以禁用中断。

语法

   Interrupts()

参数介绍

返回值

示例程序

void setup() {}
void loop()
{
  noInterrupts();
  // critical, time-sensitive code here
  interrupts();
  // other code here
}


noInterrupts()

说明

   禁止中断(重新使能中断interrupts())。
   中断允许在后台运行一些重要任务,默认使能中断。
   禁止中断时部分函数会无法工作,通信中接收到的信息也可能会丢失。
   中断会稍影响计时代码,在某些特定的代码中也会失效。

语法

   noInterrupts()

参数

返回值

示例程序

void setup() {}
void loop()
{
  noInterrupts();
  // critical, time-sensitive code here
  interrupts();
  // other code here
}

attachInterrupt()

说明

   当发生外部中断时,调用一个指定函数。
   当中断发生时,该函数会取代正在执行的程序。
   Fireduino任何一个数字引脚都可以产生外部中断。
   在单片机自动化程序中当突发事件发生时,中断是非常有用的,它可以帮助解决时序问题。
   一个使用中断的任务可能会读一个旋转编码器,监视用户的输入。
   如果你想以确保程序始终抓住一个旋转编码器的脉冲,从来不缺少一个脉冲,它将使写一个程序做任何事情都要非常棘手,
   因为该计划将需要不断轮询的传感器线编码器,为了赶上脉冲发生时。
   其他传感器也是如此,如试图读取一个声音传感器正试图赶上一按,或红外线槽传感器(照片灭弧室),试图抓住一个硬币下降。
   在所有这些情况下,使用一个中断可以释放的微控制器来完成其他一些工作。


语法

   attachInterrupt(pin, function, mode)

参数

   pin:开启外部中断的数字引脚。 
   function:中断发生时调用的函数,此函数必须不带参数和不返回任何值。该函数有时被称为中断服务程序。 
   mode:定义何时发生中断以下四个contstants预定有效值:
         LOW 当引脚为低电平时,触发中断
         HIGH 当引脚为电平时,触发中断
         RISING 当引脚由低电平变为高电平时,触发中断
         FALLING 当引脚由高电平变为低电平时,触发中断.

返回值

注意事项

   当中断函数发生时,delay()和millis()的数值将不会继续变化。
   当中断发生时,串口收到的数据可能会丢失。
   你应该声明一个变量来在未发生中断时储存变量。

示例程序

int pin = 13;
volatile int state = LOW;
 
void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, CHANGE);
}
 
void loop()
{
  digitalWrite(pin, state);
}
 
void blink()
{
  state = !state;
}

detachInterrupt()

说明

   关闭给定的中断。

语法

   detachInterrupt(interrupt)

参数

   interrupt:关闭外部中断的数字引脚。

返回值