This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

KEIL GPIO中断


extern void Int_GPIOF_Handler(void)
{

unsigned long ulStatus;
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0xFF);
ulStatus = GPIOIntStatus(GPIO_PORTF_BASE, true); // 读取中断状态
GPIOIntClear(GPIO_PORTF_BASE, ulStatus); // 清除中断状态

}

int main (void)
{

//配置LED引脚
SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);

GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,GPIO_PIN_4);





GPIOIntRegister(INT_GPIOF,&Int_GPIOF_Handler); //配置中断函数
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN| SYSCTL_XTAL_16MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_LOW_LEVEL);
GPIOIntEnable(GPIO_PORTF_BASE, GPIO_PIN_4);
IntEnable(INT_GPIOF);

IntMasterEnable();


Int_GPIOF_Handler();

while(1)
{
SysCtlDelay(320000);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0xFF);
SysCtlDelay(320000);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0x00);


}
}

  • 1.中断函数是应该不用加extern的

    2.中断函数Int_GPIOF_Handler(void)放在主函数中,这个做法是没什么用的。应该放在启动文件中。

    3.GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0xFF);第三个参数,好像不能这么写的,或操作所有的gpio的。