您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > ARDUINO中断教程
ARDUINO中断红河学院张红伟中断的概念•当你正在家中看书时,突然电话铃响了,你停止看书,去接电话,和来电话的人进行交谈,通话结束后回来继续从刚才停止的位置看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。什么是中断?•中断是指在主程序执行过程中被中断,执行中断服务程序,待中断服务程序执行完之后继续接着执行主程序。中断类型•根据中断源的位置,有两种类型的中断。中断源在CPU的内部,称为内部中断。•中断源在CPU的外部,称为外部中断。Arduino中断•Arduino中的中断可以分为两类:外部中断和定时中断。•ArduinoUNO板有两个外部中断:0(数字引脚2)和1(数字引脚3)。设置中断函数attachInterrupt•attachInterrupt(interrupt,function,mode)•当发生外部中断时,调用一个指定函数。当中断发生时,该函数会取代正在执行的程序。ArduinoUNO板有两个外部中断:0(数字引脚2)和1(数字引脚3)。•interrupt:中断引脚数function:中断发生时调用的函数,此函数必须不带参数和不返回任何值。该函数有时被称为中断服务程序。mode:定义何时发生中断以下四个contstants预定有效值:•LOW当引脚为低电平时,触发中断•CHANGE当引脚电平发生改变时,触发中断•RISING当引脚由低电平变为高电平时,触发中断•FALLING当引脚由高电平变为低电平时,触发中断.•示例attachInterrupt(0,blink,CHANGE);程序示例•intpin=13;•volatileintstate=LOW;••voidsetup()•{•pinMode(pin,OUTPUT);•attachInterrupt(0,blink,CHANGE);•}••voidloop()•{•digitalWrite(pin,state);•}••voidblink()•{•state=!state;•}注意事项•当中断函数发生时,delay()和millis()的数值将不会继续变化。当中断发生时,串口收到的数据可能会丢失。你应该声明一个变量来在未发生中断时储存变量。设置中断函数detachInterrupt•detachInterrupt(interrupt)•关闭给定的中断。•interrupt:中断禁用的数(0或者1).开关中断•中断允许在后台运行一些重要任务,默认使能中断。禁止中断时部分函数会无法工作,通信中接收到的信息也可能会丢失。•noInterrupts()•禁止中断(重新使能中断interrupts())。•interrupts()•重新启用中断(使用noInterrupts()命令后将被禁用)。•voidsetup(){•}••voidloop()•{•noInterrupts();•//重要、时间敏感的代码•interrupts();•//其他代码写在这里•}
本文标题:ARDUINO中断教程
链接地址:https://www.777doc.com/doc-1279112 .html