diff options
Diffstat (limited to '02-usart/src/core/irq.c')
-rw-r--r-- | 02-usart/src/core/irq.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/02-usart/src/core/irq.c b/02-usart/src/core/irq.c index c9b93c2..47ad924 100644 --- a/02-usart/src/core/irq.c +++ b/02-usart/src/core/irq.c @@ -1,11 +1,10 @@ #include "core/irq.h" #include "core/gpio.h" +#include "core/nvic.h" #include "arch.h" #include "delay.h" -#ifdef ARCH_STM32L4 - #define IRQ_RESERVED(n) #define IRQ(name, uname_, n) \ void WEAK name () { \ @@ -80,4 +79,14 @@ void unhandled_isr(uint8_t number) } } -#endif +void enable_interrupts(interrupt_set_t* interrupts) +{ + for (int i = 0; i < sizeof(NVIC.ise_r) / sizeof(uint32_t); ++ i) + NVIC.ise_r[i] = interrupts->irqs[i]; +} + +void disable_interrupts(interrupt_set_t* interrupts) +{ + for (int i = 0; i < sizeof(NVIC.ise_r) / sizeof(uint32_t); ++ i) + NVIC.ice_r[i] = interrupts->irqs[i]; +} |