You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
1.6 KiB
112 lines
1.6 KiB
#include "interrupt.h"
|
|
#include "hwd_interrupt.h"
|
|
#include "pin.h"
|
|
|
|
/**
|
|
* @brief Default Handler
|
|
*
|
|
* This handler is called when no interrupt handler was set
|
|
*/
|
|
static void defaultHandler(){};
|
|
|
|
volatile void (*intHandlerArray[intTypeEND])() = {NULL};
|
|
|
|
const uint8_t interruptTypeIndexList[intTypeEND] =
|
|
{
|
|
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)
|
|
{
|
|
NVIC_SetPriority(interruptTypeIndexList[intType], priority);
|
|
|
|
// check if index is correct
|
|
if(intType >= intTypeEND) return;
|
|
|
|
//intHandlerList[intType] = handler;
|
|
intHandlerArray[intType] = handler;
|
|
}
|
|
|
|
void intEnableAll()
|
|
{
|
|
__enable_irq();
|
|
}
|
|
|
|
void intDissableAll()
|
|
{
|
|
__disable_irq();
|
|
}
|
|
|
|
void intEnable(
|
|
intrType_t intType)
|
|
{
|
|
NVIC_EnableIRQ(interruptTypeIndexList[intType]);
|
|
}
|
|
|
|
void intDissable(
|
|
intrType_t intType)
|
|
{
|
|
NVIC_DisableIRQ(interruptTypeIndexList[intType]);
|
|
}
|
|
|