你好,
下面是我用来处理中断的代码
GPIO_ConfigurePin(SW_CURSOR_PORT, SW_CURSOR_PIN, INPUT_PULLUP, PID_GPIO, true);
GPIO_RegisterCallback (GPIO0_IRQn handle_event);
GPIO_EnableIRQ(SW_CURSOR_PORT, SW_CURSOR_PIN, GPIO0_IRQn, true, false, 3);
无效
handle_event(空白)
{
printf_string(“中断处理程序\ n \ r”);
NVIC_ClearPendingIRQ (GPIO0_IRQn);
}
我的中断处理程序被调用一次,如果引脚连接到地,但没有得到调用,一旦它是断开从地。它只在下降边上调用,我如何确保它在上升边和下降边上都被调用。
谢谢,
萨利姆
PS: GPIO_*是在外围设置示例中包含的gpio.c中定义的函数。

据我所知,您可以使用下面的功能来配置外部中断引脚。
Void wkupct_enable_irq(uint32_t sel_pins, uint32_t pol_pins, uint16_t events_num, uint16_t deb_time)但你应该首先设置高到低模式,然后手动设置低到高模式。至少它是有效的。祝你好运。
你已经将引脚配置为响应上升的边缘。
试试这个:在ISR回调中,切换到另一条边(下降,上升):
if (GPIO_SetIRQInputLevel(GPIO0_IRQn) == GPIO_IRQ_INPUT_LEVEL_HIGH) == GPIO_IRQ_INPUT_LEVEL_HIGH)
GPIO_SetIRQInputLevel (GPIO0_IRQn GPIO_IRQ_INPUT_LEVEL_LOW);
其他的
GPIO_SetIRQInputLevel (GPIO0_IRQn GPIO_IRQ_INPUT_LEVEL_HIGH);
可能工作……我自己也在这方面遇到麻烦。
你好,
我们可以在pin 2.9上配置中断吗?
我已经使用下面的代码来配置中断。但这并没有奏效。请验证并让我知道端口2.9引脚的正确配置。
GPIO_ConfigurePin(SWITCH3_PORT, SWITCH3_PIN, INPUT_PULLUP, PID_GPIO, false);
//配置引脚并使能开关中断
GPIO_SetPinFunction(SWITCH3_PORT, SWITCH3_PIN, INPUT_PULLUP, PID_GPIO);
GPIO_EnableIRQ(SWITCH3_PORT, SWITCH3_PIN, GPIO0_IRQn, true, true, 3);
/ / GPIO_SetIRQInputLevel (GPIO0_IRQn GPIO_IRQ_INPUT_LEVEL_LOW);
GPIO_RegisterCallback (GPIO0_IRQn gpio_intr_callback);
/ /回调函数
空白gpio_intr_callback(空白)
{
GPIO_ResetIRQ (GPIO0_IRQn);
printf("\r\n键按下检测\r\n");
}
请尽快回复。谢谢你!
嗨channaankiy25,
您可以查看文档UM-B-051,了解如何使用da的外围驱动程序。你的芯片是QFN40还是QFN48,因为端口2只对那些包可用。快速看一下,我猜在RegisterCallback中,你想要启用的irq是GPIO2_IRQn,因为你想要端口2的引脚。
由于MT_dialog