aboutsummaryrefslogtreecommitdiff
path: root/02-usart/src/core/irq.c
diff options
context:
space:
mode:
Diffstat (limited to '02-usart/src/core/irq.c')
-rw-r--r--02-usart/src/core/irq.c15
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];
+}