37#ifndef LIBOPENCM3_NVIC_H
38#define LIBOPENCM3_NVIC_H
51#define NVIC_ISER(iser_id) MMIO32(NVIC_BASE + 0x00 + \
60#define NVIC_ICER(icer_id) MMIO32(NVIC_BASE + 0x80 + \
69#define NVIC_ISPR(ispr_id) MMIO32(NVIC_BASE + 0x100 + \
78#define NVIC_ICPR(icpr_id) MMIO32(NVIC_BASE + 0x180 + \
84#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
87#define NVIC_IABR(iabr_id) MMIO32(NVIC_BASE + 0x200 + \
97#if defined(__ARM_ARCH_6M__)
98#define NVIC_IPR32(ipr_id) MMIO32(NVIC_BASE + 0x300 + \
101#define NVIC_IPR(ipr_id) MMIO8(NVIC_BASE + 0x300 + \
105#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
107#define NVIC_STIR MMIO32(STIR_BASE)
120#define NVIC_NMI_IRQ -14
121#define NVIC_HARD_FAULT_IRQ -13
124#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
125#define NVIC_MEM_MANAGE_IRQ -12
126#define NVIC_BUS_FAULT_IRQ -11
127#define NVIC_USAGE_FAULT_IRQ -10
131#define NVIC_SV_CALL_IRQ -5
134#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
135#define DEBUG_MONITOR_IRQ -4
139#define NVIC_PENDSV_IRQ -2
140#define NVIC_SYSTICK_IRQ -1
162#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
163uint8_t nvic_get_active_irq(uint8_t irqn);
164void nvic_generate_software_interrupt(uint16_t irqn);
175#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
176void mem_manage_handler(
void);
177void bus_fault_handler(
void);
178void usage_fault_handler(
void);
179void debug_monitor_handler(
void);
uint8_t nvic_get_pending_irq(uint8_t irqn)
NVIC Return Pending Interrupt.
void nvic_set_pending_irq(uint8_t irqn)
NVIC Set Pending Interrupt.
void nvic_set_priority(uint8_t irqn, uint8_t priority)
NVIC Set Interrupt Priority.
void nvic_clear_pending_irq(uint8_t irqn)
NVIC Clear Pending Interrupt.
void pend_sv_handler(void)
void hard_fault_handler(void)
uint8_t nvic_get_irq_enabled(uint8_t irqn)
NVIC Return Enabled Interrupt.
void sv_call_handler(void)
void nvic_enable_irq(uint8_t irqn)
NVIC Enable Interrupt.
void nvic_disable_irq(uint8_t irqn)
NVIC Disable Interrupt.
void sys_tick_handler(void)