diff options
Diffstat (limited to 'interrupt/interrupt.h')
-rw-r--r-- | interrupt/interrupt.h | 87 |
1 files changed, 7 insertions, 80 deletions
diff --git a/interrupt/interrupt.h b/interrupt/interrupt.h index 0851c87..b87abef 100644 --- a/interrupt/interrupt.h +++ b/interrupt/interrupt.h @@ -3,6 +3,8 @@ #include <stdint.h> +#include "interrupt_enums.h" + struct NVIC_t { volatile uint32_t ISER[32]; volatile uint32_t ICER[32]; @@ -34,98 +36,23 @@ struct SCB_t { static SCB_t& SCB = *(SCB_t*)0xe000ed00; namespace Interrupt { - enum Exception { - NMI = 2, - HardFault = 3, - MemManage = 4, - BusFault = 5, - UsageFault = 6, - SVCall = 11, - PendSV = 14, - SysTick = 15 - }; - - enum IRQ { - WWDG, - PVD, - TAMPER, - RTC, - FLASH, - RCC, - EXTI0, - EXTI1, - EXTI2, - EXTI3, - EXTI4, - DMA1_Channel1, - DMA1_Channel2, - DMA1_Channel3, - DMA1_Channel4, - DMA1_Channel5, - DMA1_Channel6, - DMA1_Channel7, - ADC1_2, - USB_HP_CAN_TX, - USB_LP_CAN_RX0, - CAN_RX1, - CAN_SCE, - EXTI9_5, - TIM1_BRK, - TIM1_UP, - TIM1_TRG_COM, - TIM1_CC, - TIM2, - TIM3, - TIM4, - I2C1_EV, - I2C1_ER, - I2C2_EV, - I2C2_ER, - SPI1, - SPI2, - USART1, - USART2, - USART3, - EXTI15_10, - RTCAlarm, - USBWakeup, - TIM8_BRK, - TIM8_UP, - TIM8_TRG_COM, - TIM8_CC, - ADC3, - FSMC, - SDIO, - TIM5, - SPI3, - UART4, - UART5, - TIM6, - TIM7, - DMA2_Channel1, - DMA2_Channel2, - DMA2_Channel3, - DMA2_Channel4_5, - NUM_IRQs - }; - inline void enable(IRQ n) { - NVIC.ISER[n >> 5] = 1 << (n & 0x1f); + NVIC.ISER[int(n) >> 5] = 1 << (int(n) & 0x1f); } inline void set_priority(Exception n, uint8_t priority) { - SCB.SHPR[n - 4] = priority; + SCB.SHPR[int(n) - 4] = priority; } inline void set_priority(IRQ n, uint8_t priority) { - NVIC.IPR[n] = priority; + NVIC.IPR[int(n)] = priority; } }; -template<Interrupt::Exception> +template<Exception> void interrupt(); -template<Interrupt::IRQ> +template<IRQ> void interrupt(); #endif |