7 #ifndef _HARDWARE_IRQ_H     8 #define _HARDWARE_IRQ_H    12 #ifndef PICO_MAX_SHARED_IRQ_HANDLERS    13 #define PICO_MAX_SHARED_IRQ_HANDLERS 4u    17 #ifndef PICO_DISABLE_SHARED_IRQ_HANDLERS    18 #define PICO_DISABLE_SHARED_IRQ_HANDLERS 0    22 #ifndef PICO_VTABLE_PER_CORE    23 #define PICO_VTABLE_PER_CORE 0    30 #include "hardware/regs/intctrl.h"    31 #include "hardware/regs/m0plus.h"    99 #ifndef PICO_DEFAULT_IRQ_PRIORITY   100 #define PICO_DEFAULT_IRQ_PRIORITY 0x80   103 #define PICO_LOWEST_IRQ_PRIORITY 0xff   104 #define PICO_HIGHEST_IRQ_PRIORITY 0x00   107 #ifndef PICO_SHARED_IRQ_HANDLER_DEFAULT_ORDER_PRIORITY   108 #define PICO_SHARED_IRQ_HANDLER_DEFAULT_ORDER_PRIORITY 0x80   111 #define PICO_SHARED_IRQ_HANDLER_HIGHEST_ORDER_PRIORITY 0xff   112 #define PICO_SHARED_IRQ_HANDLER_LOWEST_ORDER_PRIORITY 0x00   115 #ifndef PARAM_ASSERTIONS_ENABLED_IRQ   116 #define PARAM_ASSERTIONS_ENABLED_IRQ 0   130 static inline void check_irq_param(__unused uint num) {
   131     invalid_params_if(IRQ, num >= NUM_IRQS);
   287     *((
volatile uint32_t *) (PPB_BASE + M0PLUS_NVIC_ICPR_OFFSET)) = (1u << ((uint32_t) (int_num & 0x1F)));
   366 bool user_irq_is_claimed(uint irq_num);
 irq_handler_t irq_get_vtable_handler(uint num)
Get the current IRQ handler for the specified IRQ from the currently installed hardware vector table ...
Definition: irq.c:123
 
void user_irq_unclaim(uint irq_num)
Mark a user IRQ as no longer used on the calling coreUser IRQs are numbered 26-31 and are not connect...
Definition: irq.c:449
 
bool irq_is_enabled(uint num)
Determine if a specific interrupt is enabled on the executing core. 
Definition: irq.c:54
 
irq_handler_t irq_get_exclusive_handler(uint num)
Get the exclusive interrupt handler for an interrupt on the executing core.This method will return an...
Definition: irq.c:141
 
void irq_set_mask_enabled(uint32_t mask, bool enabled)
Enable/disable multiple interrupts on the executing core. 
Definition: irq.c:59
 
void irq_set_priority(uint num, uint8_t hardware_priority)
Set specified interrupt's priority. 
Definition: irq.c:377
 
void irq_set_pending(uint num)
Force an interrupt to be pending on the executing coreThis should generally not be used for IRQs conn...
Definition: irq.c:70
 
int user_irq_claim_unused(bool required)
Claim ownership of a free user IRQ on the calling coreUser IRQs are numbered 26-31 and are not connec...
Definition: irq.c:453
 
void irq_remove_handler(uint num, irq_handler_t handler)
Remove a specific interrupt handler for the given irq number on the executing coreThis method may be ...
Definition: irq.c:280
 
static void irq_clear(uint int_num)
Clear a specific interrupt on the executing coreThis method is only useful for "software" IRQs that a...
Definition: irq.h:286
 
uint irq_get_priority(uint num)
Get specified interrupt's priorityNumerically-lower values indicate a higher priority. Hardware priorities range from 0 (highest priority) to 255 (lowest priority) though only the top 2 bits are significant on ARM Cortex-M0+. To make it easier to specify higher or lower priorities than the default, all IRQ priorities are initialized to PICO_DEFAULT_IRQ_PRIORITY by the SDK runtime at startup. PICO_DEFAULT_IRQ_PRIORITY defaults to 0x80. 
Definition: irq.c:385
 
bool irq_has_shared_handler(uint num)
Determine if the current handler for the given number is shared. 
Definition: irq.c:109
 
void(* irq_handler_t)(void)
Interrupt handler function typeAll interrupts handlers should be of this type, and follow normal ARM ...
Definition: irq.h:128
 
void irq_init_priorities(void)
Perform IRQ priority initialization for the current core. 
Definition: irq.c:427
 
void irq_set_exclusive_handler(uint num, irq_handler_t handler)
Set an exclusive interrupt handler for an interrupt on the executing core.Use this method to set a ha...
Definition: irq.c:128
 
void user_irq_claim(uint irq_num)
Claim ownership of a user IRQ on the calling coreUser IRQs are numbered 26-31 and are not connected t...
Definition: irq.c:445
 
void irq_set_enabled(uint num, bool enabled)
Enable or disable a specific interrupt on the executing core. 
Definition: irq.c:49
 
void irq_add_shared_handler(uint num, irq_handler_t handler, uint8_t order_priority)
Add a shared interrupt handler for an interrupt on the executing coreUse this method to add a handler...
Definition: irq.c:206