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. 使用条款