Interrupt Drivers

An interrupt driver, found in source files mcu_irq.c/.h is provided for each of the supported microcontrollers within the Embedded SDK. The driver provides methods for managing and receiving interrupt requests from the MCU.

The available interrupt sources are provided by the 'IRQ' enumeration defined within mcu_irq.h. The driver maintains an array of handler functions for each of the possible interrupt sources. Thus, interrupt handler functions must be registered with driver, using IRQ_RegisterHandler() function, prior to enabling them.

Basic Usage

The code snippet below illustrates how to provide a handler function for an interrupt (e.g. DMA interrupt).
#include "mcu_irq.h"
#include <assert.h>

static void APP_IrqHandler(void);                   /* Local interrupt handler */

void APP_Example(void)
    STATUS status;

    status = IRQ_RegisterHandler(IRQ_DMA,           /* Register a function to handle the DMA interrupt */
                                 APP_IrqHandler);   /* Function to handle the interrupt request */
    assert(status == SUCCESS);

    status = IRQ_Enable(IRQ_DMA);                   /* Enable the interrupt */
    assert(status == SUCCESS);

static void APP_IrqHandler(void)
    /* Process and clear the interrupt */

Interrupt API

STATUS IRQ_RegisterHandler(IRQ irq, IRQHANDLER handler)
Registers an application-defined handler for an interrupt request.
irq The target interrupt request to be handled.
handler An application-defined function to be called to handle the request.
SUCCESS The handler was registered.
STATUS IRQ_Enable(IRQ irq)
Enables an interrupt.
irq The interrupt to be enabled.
SUCCESS The interrupt has been enabled.
STATUS IRQ_Disable(IRQ irq)
Disables an interrupt.
irq The interrupt to be disabled.
SUCCESS The interrupt has been disabled.
BOOLEAN IRQ_IsEnabled(IRQ irq)
Returns an indication of whether an interrupt is currently enabled.
irq The interrupt to be checked if enabled.
TRUE if the specified interrupt is enabled; otherwise FALSE.
BYTE IRQ_Priority(IRQ irq)
Returns the priority for an interrupt.
irq The target interrupt.
The current priority for the given interrupt.
STATUS IRQ_SetPriority(IRQ irq, BYTE priority)
Sets a new priority for an interrupt.
irq The interrupt to receive the new priority value.
priority The new priority for the interrupt. Value range depends upon MCU, and for ARM, a lower value indicates a higher priority.
SUCCESS The new priority has been assigned.