我的代码如下,我设置一个PE4和PE5下降沿中断 我用波形发生器输入75hz波形到PE4引脚 低于75hz时 主函数main中的while(1)能够执行 高于75hz时 主函数的while(1)无法执行 主函数while(1)是一个小灯闪烁的函数
void get_data(void)
{
unsigned long ulStatus;
ulStatus = GPIOIntStatus(GPIO_PORTE_BASE, false); // 读取中断状态
GPIOIntClear(GPIO_PORTE_BASE, ulStatus); // 清除中断状态,重要
if (ulStatus & GPIO_PIN_4) // 如果KEY的中断状态有效
{
UARTprintf("GPIO_PIN_4\r\n");
// SysCtlDelay(10*(SysCtlClockGet()/ 3000)); // 延时约10ms,消除按键抖动
// while (GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4) == 0x00); // 等待KEY抬起
// SysCtlDelay(10*(SysCtlClockGet()/ 3000)); // 延时约10ms,消除松键抖动
}
if (ulStatus & GPIO_PIN_5) // 如果KEY的中断状态有效
{
UARTprintf("GPIO_PIN_5\r\n");
}
}
void ov7725_eagle_port_init(void)
{
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinTypeGPIOInput(GPIO_PORTB_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
GPIOIntRegister(GPIO_PORTE_BASE,get_data);
GPIOPadConfigSet(GPIO_PORTE_BASE,GPIO_PIN_4|GPIO_PIN_5,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_4|GPIO_PIN_5);
// GPIOIntTypeSet(GPIO_PORTE_BASE, GPIO_PIN_5, GPIO_RISING_EDGE); // 按键中断设为低电平触发
GPIOIntTypeSet(GPIO_PORTE_BASE, GPIO_PIN_4|GPIO_PIN_5, GPIO_FALLING_EDGE); // 按键中断设为低电平触发 长中断
//设置引脚中断类型
//第三个参数代表中断类型
GPIOIntEnable(GPIO_PORTE_BASE, GPIO_PIN_4|GPIO_PIN_5); // 使能KEY所在管脚的中断
IntEnable(INT_GPIOE); // 使能GPIOG端口中断
// UARTprintf("开中断\r\n");
}
int
main(void)
{
ROM_FPULazyStackingEnable();
ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |
SYSCTL_OSC_MAIN);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2);
ConfigureUART();
ov7725_eagle_init(0);
IntMasterEnable();
UARTprintf("Hello, world!\r\n");
while(1)
{
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_PIN_2);
SysCtlDelay(SysCtlClockGet() / 10 / 3);
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 0);
SysCtlDelay(SysCtlClockGet() / 10 / 3);
}
}