Interrupts
更新时间:2017-08-08 阅读:13226
目录
操作环境
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:关闭外部中断的数字引脚。
返回值
无