你好,
这是我正在使用的代码来处理中断
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(void)
{
printf_string(“中断处理程序\ n \ r”);
nvic_clearpendingirq(gpio0_irqn);
}
如果引脚连接到地,我的中断处理程序会被调用一次,但是一旦与地面断开连接,就不会被调用。所以它仅在下降沿呼吁 - 如何确保它在上升和下降边缘呼吁。
谢谢,
sale
ps:gpio_ *是在外设设置示例中包含的gpio.c中定义的函数。
据我所知,您可以使用以下功能配置外部中断引脚。
void wkupct_enable_irq(uint32_t sel_pins,uint32_t pol_pins,uint16_t events_num,uint16_t deb_time)
但您应该首先将高到低模式,并在此之后,手动将低电平设置为高模式。至少它有效。祝你好运。
您已将PIN配置为响应上升沿。
尝试:在ISR回调中,切换到另一个边缘(下降,上升):
if(gpio_setirqinputlevel(gpio0_irqn)== gpio_irq_input_level_high)
gpio_setirqinputlevel(gpio0_irqn,gpio_irq_input_level_low);
别的
gpio_setirqinputlevel(gpio0_irqn,gpio_irq_input_level_high);
可能工作......自己遇到了麻烦。
你好,
我们可以在引脚2.9上配置中断吗?
我使用以下代码来配置中断。但它不起作用。请验证并让我知道端口2.9引脚的正确配置。
gpio_configurepin(switch3_port,switch3_pin,input_pullup,pid_gpio,false);
//配置PIN和启用交换机中断
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);
//回调函数
void gpio_intr_callback(void)
{
gpio_resetirq(gpio0_irqn);
printf(“\ r \ nkey press检测到\ r \ n”);
}
请尽快回复。谢谢你。
嗨Channaankiy25,
您可以检查文档UM-B-051,了解有关如何使用DA的外围驱动程序的信息。是您的芯片A QFN40或QFN48,因为端口2仅适用于这些软件包。从快速看,我猜,在RegiseCallback中,您要启用的IRQ是GPIO2_IRQN,因为您希望来自端口2的PIN。
谢谢mt_dialog.