diff options
author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2011-11-19 17:21:31 +0100 |
---|---|---|
committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2011-11-19 19:23:33 +0100 |
commit | 025a38a1f743fd9e89cbd477abe3f79a8d098097 (patch) | |
tree | a1f20c1b6a7f6c418bee641da923ab3d0d7208fe /hal/interrupt.h | |
parent | 9e5875f2908c1ce506e7c5712ccabc379f911360 (diff) |
Moved os and hal related files into subdirectories.
Diffstat (limited to 'hal/interrupt.h')
-rw-r--r-- | hal/interrupt.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/hal/interrupt.h b/hal/interrupt.h new file mode 100644 index 0000000..f817103 --- /dev/null +++ b/hal/interrupt.h @@ -0,0 +1,100 @@ +#ifndef INTERRUPT_H +#define INTERRUPT_H + +#include "stm32.h" + +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 + }; + + inline void enable(IRQ n) { + NVIC.ISER[n >> 5] = 1 << (n & 0x1f); + } + + inline void set_priority(Exception n, uint8_t priority) { + SCB.SHPR[n - 4] = priority; + } + + inline void set_priority(IRQ n, uint8_t priority) { + NVIC.IPR[n] = priority; + } +}; + +template<Interrupt::Exception> +void interrupt(); + +template<Interrupt::IRQ> +void interrupt(); + +#endif |