今天我將簡單記錄中斷函數git
函數分爲外部中斷和定時中斷函數
外部中斷的定義:通常由外設發出中斷請求,如:鍵盤中斷、打印機中斷、外部中斷需外部中斷源發出中斷請求才能發中斷。oop
定時中斷的定義:是指主程序在運行一段程序事後自動進行的中斷服務程序。flash
interrupt 能夠被中斷的代碼it
nointerrupt 能夠被中斷的代碼io
外部中斷:function
attach interrupt(interrupt,function,mode)請求
1)interrupt:中斷號,UNO只用0,1,即表明D2,D3口程序
2)function:調用中斷函數,中斷髮生時調用的函數im
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()
{}