首页 > 技术文章 > Arduino系列之中断函数

fqhy 2017-12-07 19:03 原文

今天我将简单记录中断函数

函数分为外部中断和定时中断

外部中断的定义:一般由外设发出中断请求,如:键盘中断、打印机中断、外部中断需外部中断源发出中断请求才能发中断。

定时中断的定义:是指主程序在运行一段程序过后自动进行的中断服务程序。

 

interrupt  可以被中断的代码

nointerrupt  可以被中断的代码

外部中断:

attach interrupt(interrupt,function,mode)

1)interrupt:中断号,UNO只用0,1,即代表D2,D3口

2)function:调用中断函数,中断发生时调用的函数

3)mode:中断触发模式

UNO R3支持四种模式

low  当针脚输入为低时,触发中断

change 当针脚输入发生变化时,触发中断

rising 当针脚由低变高时,触发中断

falling 当针脚由高到低时,触发中断

1.中断服务程序不能够有参数和返回值,即void Function name(void){}

2.在中断函数中delay()函数将不起作用

3.在中断函数中millis()函数的值不会增加

4.得到的串行数据将会丢失

5.需在中断函数内部更改的值需声明为volatile类型

detach interrupt (interrupt)

定时中断

常见的定时库有FlexiTimer2.h和Ms.Timer2.h

void start()         开启定时中断

void stop()         关闭定时中断

 

 

#include<MsTimer2.h>

void flash()

{

static boolean cutput=HIGH;

digitalWrite(13,OUTPUT);

OUTPUT=!OUTPUT;

MsTimer2:set(500,flash);

MsTimer2:start();

 

}

void loop()

{}

推荐阅读