Irq stay high after anchor run a few hours

hello,I use dw1000 for location,In my Anchor , I use trigger rising as interrupt to indicate to mcu,my code is :
void EXTI10_15_IRQHandler(void)
{
if(RESET != exti_interrupt_flag_get(EXTI_12)){
exti_interrupt_flag_clear(EXTI_12);
while(SET == gpio_input_bit_get(GPIOF,GPIO_PIN_12))
{
dwt_isr();
}
}
}
After Anchor run a few days or a few hours,the irq pin stay high level,my code can not go out of this while function, I wonder why? what is happending? In normal , the irq is a pulse. but why it became the high level? thank you!

The logical reason is that there is some interrupt condition that the dwt_isr() isn’t clearing.
You could catch this situation where the interrupt isn’t getting cleared by counting the times around the while loop and in that situation read the status and interrupt registers out and dump them to some debug log. That would give you an indication of what is going wrong so that you can then add some extra logic to handle it. Or you could reset the chip and reinitialise it from scratch. Or both.

well,thank you .in normal , when the Anchor receives data from other anchor,it will read timerstamp and data from register of dw1000 whitout clear register(0x0F) , In this situation,the level of irq pin become low from high. why? why this pin’s level is low after read data from dw1000 whitout clear register(0x0F) ???

Check the user manual for the status bit in question.
For example a lot of the receive status flags are automatically cleared when the receiver is next enabled.