1 | RCC -> APB2ENR |= RCC_APB2ENR_TIM1EN;
|
2 |
|
3 | //Global TIM1 settings
|
4 | TIM1->PSC = 1000; //100 MHz divided by this value
|
5 | TIM1->ARR = 65534; //Overflow value
|
6 |
|
7 | //Control register 1 (TIMx_CR1)
|
8 | TIM1->CR1 &= ~TIM_CR1_OPM; //Continuous mode
|
9 | TIM1->CR1 |= TIM_CR1_CMS; //PWM center-aligned mode 3
|
10 | TIM1->CR1 |= TIM_CR1_ARPE; //Auto-reload buffering
|
11 | TIM1->CR1 |= TIM_CR1_CEN; //Enable counter
|
12 |
|
13 | //Capture/compare enable register (TIMx_CCER)
|
14 | TIM1->CCER &= ~TIM_CCER_CC1P; //polarity high when active (bit=0)
|
15 | TIM1->CCER &= ~TIM_CCER_CC2P; //polarity high when active (bit=0)
|
16 | TIM1->CCER &= ~TIM_CCER_CC3P; //polarity high when active (bit=0)
|
17 | TIM1->CCER &= ~TIM_CCER_CC1NP; //polarity high when active (bit=0)
|
18 | TIM1->CCER &= ~TIM_CCER_CC2NP; //polarity high when active (bit=0)
|
19 | TIM1->CCER &= ~TIM_CCER_CC3NP; //polarity high when active (bit=0)
|
20 |
|
21 | //Capture/compare enable register (TIMx_CCER)
|
22 | TIM1->CCER |= TIM_CCER_CC1E; //Enable output compare (bit=1)
|
23 | TIM1->CCER |= TIM_CCER_CC2E; //Enable output compare (bit=1)
|
24 | TIM1->CCER |= TIM_CCER_CC3E; //Enable output compare (bit=1)
|
25 | TIM1->CCER |= TIM_CCER_CC1NE; //Enable output compare (bit=1)
|
26 | TIM1->CCER |= TIM_CCER_CC2NE; //Enable output compare (bit=1)
|
27 | TIM1->CCER |= TIM_CCER_CC3NE; //Enable output compare (bit=1)
|
28 |
|
29 | //Break/dead time register (TIMx_BDTR)
|
30 | TIM1->BDTR |= TIM_BDTR_MOE; //Master output enable - required
|
31 |
|
32 | //Capture/compare mode register 1 (TIMx_CCMR1)
|
33 | TIM1->CCMR1 &= ~TIM_CCMR1_CC1S; //CC1 output conf
|
34 | TIM1->CCMR1 &= ~TIM_CCMR1_CC2S; //CC2 output conf
|
35 | TIM1->CCMR1 |= TIM_CCMR1_OC1M; //CC1 output mode PWM2
|
36 | TIM1->CCMR1 |= TIM_CCMR1_OC2M; //CC2 output mode PWM2
|
37 |
|
38 | //Capture/compare mode register 2 (TIMx_CCMR2)
|
39 | TIM1->CCMR2 &= ~TIM_CCMR2_CC3S; //CC3 output conf
|
40 | TIM1->CCMR2 |= TIM_CCMR2_OC3M; //CC3 output mode PWM2
|
41 |
|
42 |
|
43 | //This should output a 50/50 signal on each pin
|
44 | TIM1->CCR1 = 32767;
|
45 | TIM1->CCR2 = 32767;
|
46 | TIM1->CCR3 = 32767;
|