GPIO - 使用GPIO Interrupt控制LED

材料準備

範例說明

介紹

這個範例裡,我們使用按鈕與LED。一開始LED是亮的,當我們按下按鈕並放開之後,LED變暗。再按下按鈕之後,LED變亮。
相比較於Arduino的入門的範例 “Button and LED”,不一樣的地方是,Arduino的範例是按著按鈕,LED才亮著,放開按鈕,LED才熄滅。

流程

打開範例程式,”File” -> “Examples” -> “AmebaGPIO” -> “LED_InterruptCtrl”

按Ameba上的reset按鈕來編譯並上傳程序。
LED 將首先亮起。 按下並釋放按鈕,然後 LED 應變暗。 再次按下按鈕,LED 應亮起。

程式碼說明

setup()

將引腳 12設定成

INPUT_IRQ_RISE

,這意味著當該引腳的電壓從 GND 變為 3V3 時發生中斷。 因此,我們將按鈕的另一端連接到3V3,以便在按下按鈕時觸發中斷事件。

pinMode(button, INPUT_IRQ_RISE);

另外,我們可以將引腳 12 設置為

INPUT_IRQ_FALL

,這意味著當該引腳的電壓從 3V3 變為 GND 時發生中斷。 在這種情況下,按鈕的另一側連接到 GND。 接下來,我們需要指定要執行的函數來處理中斷:

digitalSetIrqHandler(button, button_handler);

第二個參數是一個function pointer

void button_handler(uint32_t id, uint32_t event)

在這個處理程序中,每次按下和釋放按鈕時,都會觸發一個中斷,並改變 LED 的狀態。

請先確認已安裝QQ通訊軟體