Вот мой рабочий код (таймер 2, канал 2):
Код
#define ARR_VAL 36
#define CCR2_VAL ARR_VAL / 2
// 1. set up timer
TIM2->CR1 = TIM_CR1_ARPE; // count up, no divisor, auto reload
TIM2->ARR = ARR_VAL; // timer period
TIM2->PSC = 0; // prescaler
TIM2->EGR = TIM_EGR_UG; // generate an update event to reload the prescaler value
TIM2->CR2 = 0;
// 2. set up ccr2
TIM2->CCER &= ~(TIM_CCER_CC2E | TIM_CCER_CC2P); // disable cc2 output, clear polarity
TIM2->CCR2 = CCR2_VAL; // cc2 period
TIM2->CCMR1 = TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2PE; // PWM 1 (0x6000), enable preload;
TIM2->CCER |= TIM_CCER_CC2E; // enable cc2 output
TIM2->CR1 |= TIM_CR1_CEN;
Если бы я знал, что такое электричество...