#include "interrupt.h" #include "hwd_interrupt.h" #include "pin.h" volatile void (*intHandlerArray[intTypeEND])() = {NULL}; const uint8_t interruptTypeIndexList[intTypeEND] = { EXTI0_1_IRQn, EXTI0_1_IRQn, EXTI0_1_IRQn, EXTI0_1_IRQn, EXTI0_1_IRQn, EXTI0_1_IRQn, EXTI2_3_IRQn, EXTI2_3_IRQn, EXTI2_3_IRQn, EXTI2_3_IRQn, EXTI2_3_IRQn, EXTI2_3_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, TIM1_BRK_UP_TRG_COM_IRQn, TIM1_BRK_UP_TRG_COM_IRQn, TIM1_BRK_UP_TRG_COM_IRQn, TIM1_BRK_UP_TRG_COM_IRQn, TIM1_CC_IRQn, TIM1_CC_IRQn, TIM1_CC_IRQn, TIM1_CC_IRQn, TIM2_IRQn, TIM2_IRQn, TIM2_IRQn, TIM2_IRQn, TIM2_IRQn, TIM2_IRQn, TIM2_IRQn, TIM2_IRQn, TIM2_IRQn, TIM2_IRQn, TIM3_IRQn, TIM3_IRQn, TIM3_IRQn, TIM3_IRQn, TIM3_IRQn, TIM3_IRQn, TIM3_IRQn, TIM3_IRQn, TIM3_IRQn, TIM3_IRQn, TIM14_IRQn, TIM14_IRQn, TIM14_IRQn, TIM16_IRQn, TIM16_IRQn, TIM16_IRQn, TIM16_IRQn, TIM16_IRQn, TIM17_IRQn, TIM17_IRQn, TIM17_IRQn, TIM17_IRQn, TIM17_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn, SPI1_IRQn }; void intInit( intrType_t intType, intHandler_t handler, uint8_t priority) { // check if index is correct if(intType >= intTypeEND) return; intDisableGlobal(); NVIC_SetPriority(interruptTypeIndexList[intType], priority); intHandlerArray[intType] = handler; } void intEnableGlobal() { __enable_irq(); } void intDisableGlobal() { __disable_irq(); } void intEnable( intrType_t intType) { NVIC_EnableIRQ(interruptTypeIndexList[intType]); } void intDissable( intrType_t intType) { NVIC_DisableIRQ(interruptTypeIndexList[intType]); }