“AttachInterrupt()”的版本間的差異
來自ALSROBOT WiKi
(以“<pre style="color:blue"> void attachInterrupt (uint8_t interruptNum, void(*)(void)userFunc, int mode) </pre> 設(shè)置中斷 <br> 指定中斷函數(shù). 外部中斷有0...”為內(nèi)容創(chuàng)建頁面) |
2014年9月12日 (五) 17:17的最后版本
void attachInterrupt (uint8_t interruptNum, void(*)(void)userFunc, int mode)
設(shè)置中斷
指定中斷函數(shù). 外部中斷有0和1兩種, 一般對(duì)應(yīng)2號(hào)和3號(hào)數(shù)字引腳.
引腳說明(interruptNum):
Uno/Nano/Mega上
- 中斷0腳就是D2
- 中斷1腳就是D3
參數(shù):
- interrupt 中斷類型, 0或1
- fun 對(duì)應(yīng)函數(shù)
- mode 觸發(fā)方式. 有以下幾種:
- LOW 低電平觸發(fā)中斷
- CHANGE 變化時(shí)觸發(fā)中斷
- RISING 低電平變?yōu)楦唠娖接|發(fā)中斷
- FALLING 高電平變?yōu)榈碗娖接|發(fā)中斷
注解:
在中斷函數(shù)中 delay 函數(shù)不能使用, millis 始終返回進(jìn)入中斷前的值. 讀串口數(shù)據(jù)的話, 可能會(huì)丟失. 中斷函數(shù)中使用的變量需要定義為 volatile 類型.
下面的例子如果通過外部引腳觸發(fā)中斷函數(shù), 然后控制LED的閃爍.
int pin = 13; volatile int state = LOW; void setup() { pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE); } void loop() { digitalWrite(pin, state); } void blink() { state = !state; }