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 的狀態。
Copyrights ©瑞晟微电子(苏州)有限公司 2021. All rights reserved. Terms of Use