关于M4(ucos)的端口下降沿中断没有办法关闭,请高手帮我看看



void ADS1254SCLKInit(void)  //将GPIO_PIN_2设置为中断

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
    GPIOPadConfigSet(GPIO_PORTD_BASE,GPIO_PIN_2,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);// 设置PJ7为2MA,上拉输入
    GPIODirModeSet(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_DIR_MODE_IN);//设置GPIO输入
    GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_2); // 设置KEY1所在管脚为输入  
    GPIOIntTypeSet(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_FALLING_EDGE);//设置GPIO中断 
}

void IntADS1254Handler(void)  //中断执行程序
{
 unsigned long ulStatus;   
 ulStatus = GPIOPinIntStatus(GPIO_PORTD_BASE, true); // 读取中断状态
 GPIOPinIntClear(GPIO_PORTD_BASE, ulStatus);  // 清除中断状态,重要
 if (ulStatus&GPIO_PIN_2)   // GPIO_PIN_2
 {     
  GPIOPinIntDisable(GPIO_PORTD_BASE,GPIO_PIN_2); // 禁止GPIOD端口中断 
 IntDisable(INT_GPIOD); // 禁止GPIOD端口中断  
 OSSemPost(Fun_Semp);  //发送信号量   
 }  
}


下面是主程序
while (1)

OSSemPend(Fun_Semp,0,&err); //等待信号量


执行我的代码


GPIOPinIntEnable(GPIO_PORTD_BASE,GPIO_PIN_2); // 执行代码完后开中断 
IntEnable(INT_GPIOD); 

程序是:中断来后,关中断,发送信号量,主程序得到信号量,然后执行我的代码,执行完后,再打开中断
 
问题是:在中断中我关闭了中断,在我执行我的代码过程中,如果还有下降沿触发中断,还是会进入中断,就是说中断根本没有关闭。
为什么?程序哪里不对么?