TA的每日心情 | 怒 2023-7-25 22:49 |
---|
签到天数: 385 天 连续签到: 1 天 [LV.9]以坛为家II
|
Interrupts()
说明
重新启用中断(使用noInterrupts()命令后将被禁用)。
中断允许一些重要任务在后台运行,默认状态是启用的。
禁用中断后一些函数可能无法工作,并传入信息可能会被忽略。
中断会稍微打乱代码的时间,但是在关键部分可以禁用中断。
语法 Interrupts()
参数介绍 无
返回值 无
noInterrupts()
说明
禁止中断(重新使能中断interrupts())。
中断允许在后台运行一些重要任务,默认使能中断。
禁止中断时部分函数会无法工作,通信中接收到的信息也可能会丢失。
中断会稍影响计时代码,在某些特定的代码中也会失效。
语法 noInterrupts()
参数 无
返回值 无
attachInterrupt()
说明
当发生外部中断时,调用一个指定函数。
当中断发生时,该函数会取代正在执行的程序。
Fireduino任何一个数字引脚都可以产生外部中断。
在单片机自动化程序中当突发事件发生时,中断是非常有用的,它可以帮助解决时序问题。
一个使用中断的任务可能会读一个旋转编码器,监视用户的输入。
如果你想以确保程序始终抓住一个旋转编码器的脉冲,从来不缺少一个脉冲,它将使写一个程序做任何事情都要非常棘手, 因为该计划将需要不断轮询的传感器线编码器,为了赶上脉冲发生时。
其他传感器也是如此,如试图读取一个声音传感器正试图赶上一按,或红外线槽传感器(照片灭弧室),试图抓住一个硬币下降。
在所有这些情况下,使用一个中断可以释放的微控制器来完成其他一些工作。
语法
attachInterrupt(pin, function, mode)
参数
pin:开启外部中断的数字引脚。
function:中断发生时调用的函数,此函数必须不带参数和不返回任何值。该函数有时被称为中断服务程序。
mode:定义何时发生中断以下四个contstants预定有效值:
LOW 当引脚为低电平时,触发中断
HIGH 当引脚为电平时,触发中断
RISING 当引脚由低电平变为高电平时,触发中断
FALLING 当引脚由高电平变为低电平时,触发中断.
返回值 无
注意事项
当中断函数发生时,delay()和millis()的数值将不会继续变化。
当中断发生时,串口收到的数据可能会丢失。
你应该声明一个变量来在未发生中断时储存变量。
示例程序- int ledPin = 13;
- int pin0 = 0;
- volatile int state = LOW;
- void setup() {
- // put your setup code here, to run once:
- pinMode(ledPin,OUTPUT);
- attachInterrupt(pin0,blink,RISING);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- digitalWrite(ledPin,state);
- }
- void blink()
- {
- state = !state;
- }
复制代码 detachInterrupt()
说明
关闭给定的中断。
语法
detachInterrupt(interrupt)
参数
interrupt:关闭外部中断的数字引脚。
返回值 无
|
评分
-
查看全部评分
|