GPIO - Interrupt控制LED
材料准备
- AmebaPro2 [ AMB82 MINI ] x 1
- Button x 1
范例说明
这个范例里,我们使用按钮与LED。一开始LED是亮的,当我们按下按钮并放开之后,LED变暗。再按下按钮之后,LED变亮。
相比较于Arduino的入门的范例 “Button and LED”,不一样的地方是,Arduino的范例是按着按钮,LED才亮着,放开按钮,LED才熄灭。
打开范例程式,”File” -> “Example” -> “AmebaGPIO” -> “Interrupt_Ctrl_LED”
由于 AmebaPro2 [AMB82 MINI] 上没有内置按钮,您可以选择将黄色标记的代码更改为任何 GPIO 引脚号。 在此示例中,使用了 GPIO 引脚 0。
AMB82 MINI 接线图:
按Ameba上的reset按钮来编译并上传程序。
LED 将首先亮起。按下并释放按钮,然后 LED 应变暗。再次按下按钮,LED 应亮起。
程式码说明
在
setup()
将上例中的 GPIO 引脚设定成
INPUT_IRQ_RISE
,这意味着当该引脚的电压从 GND 变为 3V3 时发生中断。因此,我们将按钮的另一端连接到3V3,以便在按下按钮时触发中断事件。
pinMode(button, INPUT_IRQ_RISE);
另外,我们可以将上例中的 GPIO 引脚设置为
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. 使用条款