NavHAL 0.1.0
NAVRobotec's architecture-agnostic HAL for embedded systems.
Loading...
Searching...
No Matches
interrupt.c File Reference

Cortex-M4 Interrupt Controller HAL Implementation. More...

#include "core/cortex-m4/interrupt.h"
#include "common/hal_status.h"
#include <stdint.h>
Include dependency graph for interrupt.c:

Macros

#define MAX_IRQ   128
 Maximum number of supported interrupts.

Functions

int8_t hal_enable_interrupt (IRQn_Type interrupt)
 Enable a specific interrupt.
int8_t hal_disable_interrupt (IRQn_Type interrupt)
 Disable a specific interrupt.
void hal_interrupt_attach_callback (IRQn_Type interrupt, void(*callback)(void))
 Attach a callback function to an interrupt.
void hal_interrupt_detach_callback (IRQn_Type interrupt)
 Detach a callback function from an interrupt.
void hal_handle_interrupt (IRQn_Type interrupt)
 Handle an interrupt by invoking its registered callback.

Detailed Description

Cortex-M4 Interrupt Controller HAL Implementation.

This file provides interrupt management functions for Cortex-M4 based microcontrollers, including:

  • Enabling/disabling individual interrupts
  • Attaching/detaching interrupt callbacks
  • Handling interrupt service routines
  • Managing up to 128 interrupt sources

The implementation uses the NVIC (Nested Vectored Interrupt Controller) and provides a simple callback mechanism for interrupt handling.

Macro Definition Documentation

◆ MAX_IRQ

#define MAX_IRQ   128

Maximum number of supported interrupts.

Function Documentation

◆ hal_disable_interrupt()

int8_t hal_disable_interrupt ( IRQn_Type interrupt)

Disable a specific interrupt.

Parameters
[in]interruptInterrupt number to disable
Returns
Status of operation
Return values
SUCCESSInterrupt disabled successfully
FAILUREInvalid interrupt number (Cortex-M internal interrupt)

Disables the specified interrupt in the NVIC by setting the corresponding bit in the ICER (Interrupt Clear Enable Register).

< Indicates failed operation.

< Indicates successful operation.

◆ hal_enable_interrupt()

int8_t hal_enable_interrupt ( IRQn_Type interrupt)

Enable a specific interrupt.

Parameters
[in]interruptInterrupt number to enable
Returns
Status of operation
Return values
SUCCESSInterrupt enabled successfully
FAILUREInvalid interrupt number (Cortex-M internal interrupt)

Enables the specified interrupt in the NVIC by setting the corresponding bit in the ISER (Interrupt Set Enable Register).

< Indicates failed operation.

< Indicates successful operation.

◆ hal_handle_interrupt()

void hal_handle_interrupt ( IRQn_Type interrupt)

Handle an interrupt by invoking its registered callback.

Central interrupt handler function.

Parameters
[in]interruptInterrupt number to handle

This function should be called from the actual interrupt service routine (ISR) to invoke the user-registered callback function. It performs bounds checking and NULL pointer verification before invoking the callback.

◆ hal_interrupt_attach_callback()

void hal_interrupt_attach_callback ( IRQn_Type interrupt,
void(* callback )(void) )

Attach a callback function to an interrupt.

Attach a callback function to a specific interrupt.

Parameters
[in]interruptInterrupt number to attach to
[in]callbackFunction pointer to be called when interrupt occurs

Registers a callback function for the specified interrupt. The callback will be invoked when the interrupt occurs and is handled by hal_handle_interrupt().

Note
The callback function should be short and non-blocking

◆ hal_interrupt_detach_callback()

void hal_interrupt_detach_callback ( IRQn_Type interrupt)

Detach a callback function from an interrupt.

Detach a callback function from a specific interrupt.

Parameters
[in]interruptInterrupt number to detach from

Removes any previously registered callback for the specified interrupt.