GPIO - 使用GPIO Interrupt控制LED

材料准备

范例说明

这个范例里,我们使用按钮与LED。一开始LED是亮的,当我们按下按钮并放开之后,LED变暗。再按下按钮之后,LED变亮。
相比较于Arduino的入门的范例 “Button and LED”,不一样的地方是,Arduino的范例是按着按钮,LED才亮着,放开按钮,LED才熄灭。

打开范例程式,”File” -> “Example” -> “AmebaGPIO” -> “LED_InterruptCtrl”

AMB21/ AMB22:

1

AMB23:

1

BW16:

1

BW16 type C:

1

Compile and upload the program, press the reset button on the Ameba.
The LED will light up at first. Press and release the button, then the LED should dim. Press the button again the LED should light up.

程式码说明

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. 使用条款
请先确认已安装QQ通讯软体