This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Debug and old IRQ

Hello, When I restart my application with debugger, i have strange IRQs called (TWI, ...) before init. Possibly IRQ still active and debug don't touch them.

Can I disable all IRQ on restart ? Is there a magic cleaning function ? :-)

Parents
  • Hi,

       __disable_irq();
    

    I think this is ARM CMSIS funtion and it will disable all IRQ. This should be ok as you are doing it before enabling softdevice.

  • I propose

    // disable all external interrupts
    		NVIC->ICER[0] = 0xFFFFFFFF;
    		NVIC->ICER[1] = 0xFFFFFFFF;
    		NVIC->ICER[2] = 0xFFFFFFFF;
    		NVIC->ICER[3] = 0xFFFFFFFF;
    		NVIC->ICER[4] = 0xFFFFFFFF;
    		NVIC->ICER[5] = 0xFFFFFFFF;
    		NVIC->ICER[6] = 0xFFFFFFFF;
    		NVIC->ICER[7] = 0xFFFFFFFF;
    		
    		// clear all external pending interrupts
    		NVIC->ICPR[0] = 0xFFFFFFFF;
    		NVIC->ICPR[1] = 0xFFFFFFFF;
    		NVIC->ICPR[2] = 0xFFFFFFFF;
    		NVIC->ICPR[3] = 0xFFFFFFFF;
    		NVIC->ICPR[4] = 0xFFFFFFFF;
    		NVIC->ICPR[5] = 0xFFFFFFFF;
    		NVIC->ICPR[6] = 0xFFFFFFFF;
    		NVIC->ICPR[7] = 0xFFFFFFFF;
    
Reply
  • I propose

    // disable all external interrupts
    		NVIC->ICER[0] = 0xFFFFFFFF;
    		NVIC->ICER[1] = 0xFFFFFFFF;
    		NVIC->ICER[2] = 0xFFFFFFFF;
    		NVIC->ICER[3] = 0xFFFFFFFF;
    		NVIC->ICER[4] = 0xFFFFFFFF;
    		NVIC->ICER[5] = 0xFFFFFFFF;
    		NVIC->ICER[6] = 0xFFFFFFFF;
    		NVIC->ICER[7] = 0xFFFFFFFF;
    		
    		// clear all external pending interrupts
    		NVIC->ICPR[0] = 0xFFFFFFFF;
    		NVIC->ICPR[1] = 0xFFFFFFFF;
    		NVIC->ICPR[2] = 0xFFFFFFFF;
    		NVIC->ICPR[3] = 0xFFFFFFFF;
    		NVIC->ICPR[4] = 0xFFFFFFFF;
    		NVIC->ICPR[5] = 0xFFFFFFFF;
    		NVIC->ICPR[6] = 0xFFFFFFFF;
    		NVIC->ICPR[7] = 0xFFFFFFFF;
    
Children
No Data
Related