CC3200 的GPIO2和GPIO4同时当作中断使用的问题
TI工程师:
你们好。3200里面,我同时设置了GPIO2和GPIO4为按键的中断触发源,但是发现使用了GPIO4的话,GPIO2就不能触发,它俩处于同一个GPIOx_BASE中,是需要特殊设置什么吗。两者设置代码分别是,GPIO2的为
PinModeSet(PIN_57,PIN_MODE_0);
PinConfigSet(PIN_57,PIN_STRENGTH_2MA,PIN_TYPE_STD);
GPIODirModeSet(GPIOA0_BASE,GPIO_PIN_2,GPIO_DIR_MODE_IN);
GPIOIntTypeSet(GPIOA0_BASE,GPIO_PIN_2,GPIO_RISING_EDGE);
GPIOIntRegister(GPIOA0_BASE,EpPushButtonInterruptHandler3);
GPIOIntEnable(GPIOA0_BASE,GPIO_INT_PIN_2);
void EpPushButtonInterruptHandler3()
{
UART_PRINT("Button 3 Pressed!:\n\r");
eButton3_IF_EnableInterrupt();
}
eButton3_IF_EnableInterrupt()
{
//Enable GPIO Interrupt
MAP_GPIOIntClear(GPIOA0_BASE,GPIO_PIN_2);
MAP_IntPendClear(INT_GPIOA0);
MAP_IntEnable(INT_GPIOA0);
MAP_GPIOIntEnable(GPIOA0_BASE,GPIO_PIN_2);
}
和GPIO4的为
PinModeSet(PIN_59,PIN_MODE_0);
PinConfigSet(PIN_59,PIN_STRENGTH_2MA,PIN_TYPE_STD);
GPIODirModeSet(GPIOA0_BASE,GPIO_PIN_4,GPIO_DIR_MODE_IN);
GPIOIntTypeSet(GPIOA0_BASE,GPIO_PIN_4,GPIO_RISING_EDGE);
GPIOIntRegister(GPIOA0_BASE,EpPushButtonInterruptHandler4);
GPIOIntEnable(GPIOA0_BASE,GPIO_INT_PIN_4);
void EpPushButtonInterruptHandler4()
{
//GPIOSosIntHandler();
UART_PRINT("Button 4 Pressed!:\n\r");
//GPIOIntClear(GPIOA0_BASE,GPIO_PIN_4);
eButton4_IF_EnableInterrupt();
}
eButton4_IF_EnableInterrupt()
{
//Enable GPIO Interrupt
MAP_GPIOIntClear(GPIOA0_BASE,GPIO_PIN_4);
MAP_IntPendClear(INT_GPIOA0);
MAP_IntEnable(INT_GPIOA0);
MAP_GPIOIntEnable(GPIOA0_BASE,GPIO_PIN_4);
},还需要其它设置吗,谢谢。
已经解决
能否分享一下是什么问题,怎么解决的吗?多谢!
GPIO2和GPIO4同属于一个GPIOx-BASE,所以只需要在中断中注册一次,如果注册两次的话,3200会只识别最后一次注册的中断,而忽略前一次的,当中断发生时候,通过读取IO脚的状态来判断究竟是哪一个引脚引起的中断就可以了
GPIO2和GPIO4同属于一个GPIOx-BASE,所以只需要在中断中注册一次,如果注册两次的话,3200会只识别最后一次注册的中断,而忽略前一次的,当中断发生时候,通过读取IO脚的状态来判断究竟是哪一个引脚引起的中断就可以了