External Interrupt controller HW driver source file.
More...
|
static uint32_t | __neorv32_xirq_vector_lut [32] |
|
External Interrupt controller HW driver source file.
- Note
- These functions should only be used if the XIRQ controller was synthesized.
- See also
- https://stnolting.github.io/neorv32/sw/files.html
◆ __neorv32_xirq_core()
static void __neorv32_xirq_core |
( |
void | | ) |
|
|
static |
This is the actual second-level (F)IRQ handler for the XIRQ. It will call the previously installed handler if an XIRQ fires.
- Note
- The XIRQ's channel interrupt is acknowledge AFTER the handler has been executed.
◆ __neorv32_xirq_dummy_handler()
static void __neorv32_xirq_dummy_handler |
( |
void | | ) |
|
|
static |
◆ neorv32_xirq_available()
int neorv32_xirq_available |
( |
void | | ) |
|
Check if external interrupt controller was synthesized.
- Returns
- 0 if XIRQ was not synthesized, 1 if EXTIRQ is available.
◆ neorv32_xirq_channel_disable()
void neorv32_xirq_channel_disable |
( |
int | channel | ) |
|
Disable IRQ channel.
- Parameters
-
[in] | channel | XIRQ interrupt channel (0..31). |
◆ neorv32_xirq_channel_enable()
void neorv32_xirq_channel_enable |
( |
int | channel | ) |
|
Enable IRQ channel.
- Parameters
-
[in] | channel | XIRQ interrupt channel (0..31). |
◆ neorv32_xirq_get_num()
int neorv32_xirq_get_num |
( |
void | | ) |
|
Get number of implemented XIRQ channels
- Returns
- Number of implemented channels (0..32).
◆ neorv32_xirq_global_disable()
void neorv32_xirq_global_disable |
( |
void | | ) |
|
Globally disable XIRQ interrupts (via according FIRQ channel).
- Note
- Triggered / triggering XIRQ will remain pending.
◆ neorv32_xirq_global_enable()
void neorv32_xirq_global_enable |
( |
void | | ) |
|
Globally enable XIRQ interrupts (via according FIRQ channel).
- Note
- Triggered / triggering XIRQ will remain pending.
◆ neorv32_xirq_install()
int neorv32_xirq_install |
( |
int | channel, |
|
|
void(* | handler )(void) ) |
Install interrupt handler function for XIRQ channel.
- Parameters
-
[in] | channel | XIRQ interrupt channel (0..31). |
[in] | handler | The actual handler function for the specified interrupt (function MUST be of type "void function(void);"). |
- Returns
- 0 if success, -1 if invalid channel.
◆ neorv32_xirq_setup()
int neorv32_xirq_setup |
( |
void | | ) |
|
Initialize XIRQ controller.
- Note
- All interrupt channels will be deactivated and all installed handlers addresses will be deleted.
- Returns
- 0 if success, != 0 if error.
◆ neorv32_xirq_setup_trigger()
void neorv32_xirq_setup_trigger |
( |
int | channel, |
|
|
int | config ) |
Configure a channel's trigger type.
- Parameters
-
[in] | channel | XIRQ interrupt channel (0..31). |
[in] | config | Trigger type (XIRQ_TRIGGER_enum). |
◆ neorv32_xirq_uninstall()
int neorv32_xirq_uninstall |
( |
int | channel | ) |
|
Uninstall interrupt handler function for XIRQ channel.
- Note
- This will also deactivate the according XIRQ channel.
- Parameters
-
[in] | channel | XIRQ interrupt channel (0..31). |
- Returns
- 0 if success, -1 if invalid channel.