|
|
|
@ -1,12 +1,15 @@
|
|
|
|
|
#include "timer.h"
|
|
|
|
|
#include "interrupt.h"
|
|
|
|
|
|
|
|
|
|
#include "hwd_interrupt.h"
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#define BASE ((TIM_TypeDef *)timerBase_Addr_List[timer])
|
|
|
|
|
|
|
|
|
|
// debug notes: the makro works. what seems to not work is the indexing and calling the handler!
|
|
|
|
|
#define HANDLE_INT_FLAG(flagReg, flagMask, intType)\
|
|
|
|
|
do {if ((flagReg) & (flagMask)) {\
|
|
|
|
|
(flagReg) &= ~(flagMask);\
|
|
|
|
|
((intHandler_t)(intHandlerList[(intType)]))();\
|
|
|
|
|
if(intHandlerArray[(intType)] == NULL) continue;\
|
|
|
|
|
intHandlerArray[(intType)]();\
|
|
|
|
|
}} while (0)
|
|
|
|
|
|
|
|
|
|
void timerReset(timerNo_t timer)
|
|
|
|
@ -259,9 +262,9 @@ void timerThrowError(timerError_t error)
|
|
|
|
|
void TIM1_BRK_UP_TRG_COM_IRQHandler()
|
|
|
|
|
{
|
|
|
|
|
HANDLE_INT_FLAG(TIM1->SR,TIM_SR_BIF,TIM1_BREAK);
|
|
|
|
|
HANDLE_INT_FLAG(TIM1->SR,TIM_SR_BIF,TIM1_UPDATE);
|
|
|
|
|
HANDLE_INT_FLAG(TIM1->SR,TIM_SR_BIF,TIM1_TRIGGER);
|
|
|
|
|
HANDLE_INT_FLAG(TIM1->SR,TIM_SR_BIF,TIM1_COMMUNICATION);
|
|
|
|
|
HANDLE_INT_FLAG(TIM1->SR,TIM_SR_UIF,TIM1_UPDATE);
|
|
|
|
|
HANDLE_INT_FLAG(TIM1->SR,TIM_SR_TIF,TIM1_TRIGGER);
|
|
|
|
|
HANDLE_INT_FLAG(TIM1->SR,TIM_SR_COMIF,TIM1_COMMUNICATION);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TIM1_CC_IRQHandler()
|
|
|
|
@ -274,7 +277,23 @@ void TIM1_CC_IRQHandler()
|
|
|
|
|
|
|
|
|
|
void TIM2_IRQHandler()
|
|
|
|
|
{
|
|
|
|
|
/*
|
|
|
|
|
if(TIM2->SR & TIM_SR_UIF) {
|
|
|
|
|
TIM2->SR &= ~TIM_SR_UIF;
|
|
|
|
|
|
|
|
|
|
if(intHandlerArray[TIM2_UPDATE] == NULL) return;
|
|
|
|
|
|
|
|
|
|
//pinToggle(pinB3);
|
|
|
|
|
|
|
|
|
|
intHandlerArray[TIM2_UPDATE]();
|
|
|
|
|
|
|
|
|
|
// debug info: not working here!
|
|
|
|
|
//((intHandler_t)(intHandlerList[TIM2_UPDATE]))();
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
HANDLE_INT_FLAG(TIM2->SR,TIM_SR_UIF,TIM2_UPDATE);
|
|
|
|
|
/*
|
|
|
|
|
HANDLE_INT_FLAG(TIM2->SR,TIM_SR_CC1IF,TIM2_COUNTERCOMPARE_1);
|
|
|
|
|
HANDLE_INT_FLAG(TIM2->SR,TIM_SR_CC2IF,TIM2_COUNTERCOMPARE_2);
|
|
|
|
|
HANDLE_INT_FLAG(TIM2->SR,TIM_SR_CC3IF,TIM2_COUNTERCOMPARE_3);
|
|
|
|
@ -284,6 +303,7 @@ void TIM2_IRQHandler()
|
|
|
|
|
HANDLE_INT_FLAG(TIM2->SR,TIM_SR_CC2OF,TIM2_CAPTURECOMPARE_2);
|
|
|
|
|
HANDLE_INT_FLAG(TIM2->SR,TIM_SR_CC3OF,TIM2_CAPTURECOMPARE_3);
|
|
|
|
|
HANDLE_INT_FLAG(TIM2->SR,TIM_SR_CC4OF,TIM2_CAPTURECOMAPRE_4);
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TIM3_IRQHandler()
|
|
|
|
@ -309,7 +329,7 @@ void TIM16_IRQHandler()
|
|
|
|
|
HANDLE_INT_FLAG(TIM16->SR,TIM_SR_UIF,TIM16_UPDATE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TIM117_IRQHandler()
|
|
|
|
|
void TIM17_IRQHandler()
|
|
|
|
|
{
|
|
|
|
|
HANDLE_INT_FLAG(TIM17->SR,TIM_SR_CC1OF,TIM17_CAPTURECOMPARE_1_OVERCAPTURE);
|
|
|
|
|
HANDLE_INT_FLAG(TIM17->SR,TIM_SR_BIF,TIM17_BREAK);
|
|
|
|
|