跳过主要内容

多个按钮中断

DA14581

5年前

发布的Cosmin0点 3回复
0的问题

你好,对话框,

我想做一个BLE遥控器,我想用按钮中断。我正在使用以下代码:

GPIO_RegisterCallback(GPIO0_IRQn, app_button_press_cb);
GPIO_RegisterCallback(GPIO1_IRQn, app_button_press_cb);
GPIO_EnableIRQ(GPIO_PORT_0, GPIO_PIN_6, GPIO0_IRQn, true, true, 16);
GPIO_EnableIRQ(GPIO_PORT_1, GPIO_PIN_1, GPIO1_IRQn, true, true, 16);

这是很好。我按任意一个按钮,它将我发送到中断功能。

我的问题是,如果我想使用更多的按钮(我至少有6个),IRQn只有5个GPIO中断(GPIO0_IRQn到GPIO4_IRQn),我如何为更多的按钮启用更多的中断?
如果我把GPIO0_IRQn放在两个enable函数上,只有最后一个按钮是启用的。

谢谢你!
Cosmin。

5年前

MT_dialog -30点

嗨Cosmin,

如果你想在你的设备中有更多的按钮,你可以使用矩阵方案,因为GPIO中断是有限的,请检查远程或键盘参考设计,以获得关于如何实现这一点的更多信息。或者你可以尝试的另一件事是,在中断(在ISR)轮询指定的引脚(获得每个引脚的状态)。

由于MT_dialog

4年前

前腿帕特尔 0点

你好MT_dialog,

我也面临着同样的问题。我想用8个按钮。而IRQn只有5个GPIO中断(GPIO0_IRQn到GPIO4_IRQn),我如何为更多的按钮启用更多的中断?

你已经在你的评论中提到“在中断(在ISR)轮询指定的引脚(获得每个引脚的状态)”。你能详细解释一下吗?

并详细说明“键盘参考设计”。

感谢和问候,
前腿

4年前

MT_dialog -30点

嗨,前腿帕特尔

正如已经提到的,使用多个按钮的参考设计的键盘和遥控器的参考设计,这些参考设计包括文档和关于他们functionallity应用笔记,这样你就可以看一看这些文件,并检查细节实施(嗯- b - 009, - b - 037)。关于我已经提到的,如果你不想实现矩阵方案为了有多个按钮你可以触发一个函数,当一个中断发生,读相应的端口寄存器为了检查这针是高或低,你将能够知道按哪个按钮。

由于MT_dialog