第一篇Arduino的日志嘖嘖。
中斷的概念。
我們從一個生活中的例子引入。你正在家中看書,突然電話鈴響了,你放下書本,去接電話,和來電話的人交談,然后放下電話,回來繼續看你的書。這就是生活中的“中斷”的現象,就是正常的工作過程被外部的事件打斷了。
在Arduino庫中定義,UNO有兩個中斷,MEGA2560有六個中斷。具體如下表,來自 http://arduino.cc/en/Reference/AttachInterrupt
DUE普及率非常一般,暫不涉及。
語法。
attachInterrupt(interrupt, function, mode)
變量使用。
1)interrupt:中斷號,UNO只能使用 0或1 ,即代表D2 與D3口。
2)function:調用中斷函數,中斷發生時調用的函數。
3)mode:中斷觸發模式。
UNO R3 支持四種中斷觸發模式:
LOW | 當針腳輸入為低時,觸發中斷 |
CHANGE | 當針腳輸入發生改變時,觸發中斷 |
RISING | 當針腳輸入由低變高時,觸發中斷 |
FALLING | 當針腳輸入由高變低時,觸發中斷 |
中斷函數不返回任何值。
中斷函數的使用方法:
首先給出一段來自官方的例程:
int pin = 13; //首先我們需要找一個燈來觀察 volatile int state = LOW; //設置燈狀態 void setup() { pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE); //設置觸發,中斷號0,即數字2口 } void loop() { digitalWrite(pin, state); //對觀察燈寫入狀態值 } void blink() //觸發函數 { state = !state; //將狀態變量求反 }
我們從中可以看出,使用中斷函數時,不需要定義針腳狀態,直接使用中斷函數即可。
當我們需要取消中斷時,我們有下面的命令。
detachInterrupt(interrupt)
interrupt 是中斷號。執行此語句后,系統不會對中斷有反應,即上例中,系統不會再對燈狀態進行改變。