4 posts / 0 new
Last post
jxingl136327
Offline
Last seen:4 years 9 months ago
加入:2016-06-08 10:24
关于按键中断

我想用一个按键产生一个中断,然后再中断中点亮一个指示灯
硬件接法是: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端口上出现了低电平 ,但是 去无法进入中断进行回调

请教

Device:
Gongyu_Dialog
Offline
Last seen:1 day 7 hours ago
加入:2016-04-27 07:07
你现在用的是GPIO中断,那么在睡眠下是不起作用的

你现在用的是GPIO中断,那么在睡眠下是不起作用的。如果需要实现按键的功能,建议参考SDK自带的app_button_enable函数

jxingl136327
Offline
Last seen:4 years 9 months ago
加入:2016-06-08 10:24
/*Sleep modes*/

/*Sleep modes*/
#undef CFG_EXT_SLEEP
#undef CFG_DEEP_SLEEP

在da14580_config.h文件中 没有定义睡眠 那么整个程序应该不会处于睡眠下吧 再次请教你

Gongyu_Dialog
Offline
Last seen:1 day 7 hours ago
加入:2016-04-27 07:07
是的

是的