我想用一个按键产生一个中断,然后再中断中点亮一个指示灯
硬件接法是:P2.7端口接入一个按键 ,按下按键 IO口为低电平 然后写了以下的程序 但是怎么都进入不了中断
首先是初始化 使能按键中断 该函数在 periph_setup.c 中 执行 periph_init(void); 时被调用
void app_sw1_button_enable(void)
{
NVIC_DisableIRQ(GPIO2_IRQn);
GPIO_RegisterCallback(GPIO2_IRQn, sw1_callback_button_isr);
GPIO_EnableIRQ(GPIO_SW1_PORT, GPIO_SW1_PIN, GPIO2_IRQn, true, true, 10);
}
下面是回调函数
void sw1_callback_button_isr(void)
{
NVIC_DisableIRQ(GPIO2_IRQn); // Disable this interrupt
GPIO_ResetIRQ(GPIO2_IRQn); // clear pending interrupt
GPIO_SetActive(GPIO_LD2_PORT , GPIO_LD2_PIN ); //点亮LED灯
NVIC_ClearPendingIRQ(GPIO2_IRQn); // Clear interrupt requests while disabled
NVIC_EnableIRQ(GPIO2_IRQn); // Enable this interrupt
}
按键配置:
RESERVE_GPIO( SW1, GPIO_SW1_PORT, GPIO_SW1_PIN, PID_GPIO);
GPIO_ConfigurePin( GPIO_SW1_PORT, GPIO_SW1_PIN, INPUT_PULLUP, PID_GPIO, false );
当我按下按键时,P2.7端口上出现了低电平 ,但是 去无法进入中断进行回调
请教
你现在用的是GPIO中断,那么在睡眠下是不起作用的。如果需要实现按键的功能,建议参考SDK自带的app_button_enable函数
/*Sleep modes*/
#undef CFG_EXT_SLEEP
#undef CFG_DEEP_SLEEP
在da14580_config.h文件中 没有定义睡眠 那么整个程序应该不会处于睡眠下吧 再次请教你
是的