launchpad用K2控制D2,用K4控制D3,现在只能实现前一个,如果用注释里的程序就可以,为什么?注释部分实现的是相同的功能,不理解,

void Key2IntHandler(void)
{
   GPIOIntClear(GPIO_PORTF_BASE,GPIO_INT_PIN_4);
   if(GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_0))
           GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0<<0);
       else
           GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);
}
void Key4IntHandler(void)
{
    GPIOIntClear(GPIO_PORTA_BASE,GPIO_INT_PIN_2);
    if(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4))
               GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0<<0);
           else
               GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,1<<0);
    /*GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,
       (0x10^GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4)));*/
}
main(void)
{
    SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                       SYSCTL_XTAL_16MHZ);
    //设置系统时钟50MHZ;
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    //使能外设
    HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
    HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= 0x01;
    HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;
    //解锁PF0
    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0);
    GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4);//D2,D3
    GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0);
    GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0);
    //配置并初始化
    GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);
    GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2);
    GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_4,GPIO_FALLING_EDGE);
    GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_2,GPIO_FALLING_EDGE);
    GPIOIntEnable(GPIO_PORTF_BASE,GPIO_INT_PIN_4);
    GPIOIntEnable(GPIO_PORTA_BASE,GPIO_INT_PIN_2);
    IntMasterEnable();
    IntPrioritySet(INT_GPIOA,1);
    IntPrioritySet(INT_GPIOF,0);
    GPIOIntRegister(GPIO_PORTF_BASE, Key2IntHandler);
    GPIOIntRegister(GPIO_PORTA_BASE, Key4IntHandler);
    while(1)
    {
    }
}

5 个回复