yeah, that's core specific. It might be that peripherals run on a different clock domain where you might have to wait N periph clock cycles for the source to clear, if I remember correctly. I don't have it handy, but I have some memory of writing something like: ```rust fn ISR() { // mark event as serviced regs.events().modify(|w| w.whatever().clear()); // wait for status to update while regs.events().read().whatever().is_set() {} } ```