diff --git a/ProjetsKEIL/Drivers/timerdriver.c b/ProjetsKEIL/Drivers/timerdriver.c index 73a377e..09b982a 100644 --- a/ProjetsKEIL/Drivers/timerdriver.c +++ b/ProjetsKEIL/Drivers/timerdriver.c @@ -29,9 +29,29 @@ void MyTimer_ActiveIT(TIM_TypeDef * TimerX, uint8_t Prio) NVIC->ISER[0] |= (0x1<CCER + switch(PWM->channel) + { + case 2: + PWM->Timer->CCMR1 |= (PWMMode_1<Timer->CCR2 = PWM->CCR; //Compare Capture register count + break; + case 3: + PWM->Timer->CCMR2 |= (PWMMode_1<Timer->CCR3 = PWM->CCR; + break; + case 4: + PWM->Timer->CCMR2 |= (PWMMode_1<Timer->CCR4 = PWM->CCR; + break; + default: + PWM->Timer->CCMR1 |= (PWMMode_1<Timer->CCR1 = PWM->CCR; + break; + } + PWM->Timer->BDTR |= (1<Timer->CCER |= (1<<4*(PWM->channel-1)); //enable capture/compare registers } int TimerX2Int(TIM_TypeDef * TimerX) diff --git a/ProjetsKEIL/Drivers/timerdriver.h b/ProjetsKEIL/Drivers/timerdriver.h index 774ac57..2bbc66c 100644 --- a/ProjetsKEIL/Drivers/timerdriver.h +++ b/ProjetsKEIL/Drivers/timerdriver.h @@ -2,9 +2,13 @@ #define TIMERDRIVER_H #include "stm32f10x.h" -#define CEN 0x0 -#define UIE 0x0 -#define UIF 0x0 +#define CEN 0x0 +#define UIE 0x0 +#define UIF 0x0 +#define MOE 0xF +#define OC13M_START 0x4 +#define OC24M_START 0xC +#define PWMMode_1 0x6 typedef struct { TIM_TypeDef * Timer; //TIM1 -> TIM4 @@ -12,12 +16,18 @@ typedef struct { unsigned short PSC; } MyTimer_Struct_TypeDef; +typedef struct { + TIM_TypeDef * Timer; //TIM1 -> TIM4 + uint8_t channel; + uint16_t CCR; +} MyPWM_Struct_TypeDef; + void MyTimer_Base_Init(MyTimer_Struct_TypeDef * Timer); int TimerX2Int(TIM_TypeDef * TimerX); uint8_t TimerIT2UInt(TIM_TypeDef * TimerX); void MyTimer_ActiveIT(TIM_TypeDef * TimerX, uint8_t Prio); void Init_Periph (void (* ptrFonction)(void)); -void MyTimer_PWM(TIM_TypeDef * TimerX, uint8_t channel); +void MyTimer_PWM_Init(MyPWM_Struct_TypeDef * PWM); #define MyTimer_Base_Start(Timer) (Timer->CR1 |= (0x01<CR1 &= ~(0x01<CCMR1 |= (0x6<<12); - TIM2->BDTR |= (1<CCR2 = 10; - TIM2->CCER |= (1<<4); //0 pour CC1E, 4 pour CC2P + MyPWM_Struct_TypeDef timer2channel2 = {TIM2,1,400}; + MyTimer_PWM_Init(&timer2channel2); + //TIM2->CCMR1 |= (0x6<<12); + //TIM2->BDTR |= (1<CCR2 = 10; + //TIM2->CCER |= (1<<4); //0 pour CC1E, 4 pour CC2E // 4*(channel-1) do{ }while(1) ; diff --git a/ProjetsKEIL/timer_interruption/timer_interruption.uvoptx b/ProjetsKEIL/timer_interruption/timer_interruption.uvoptx index 09beeee..bc4e426 100644 --- a/ProjetsKEIL/timer_interruption/timer_interruption.uvoptx +++ b/ProjetsKEIL/timer_interruption/timer_interruption.uvoptx @@ -434,7 +434,7 @@ 1 3 1 - 0 + 1 0 0 ..\Drivers\timerdriver.c