MiklPolikov 0 27 ноября, 2017 Опубликовано 27 ноября, 2017 · Жалоба В процессоре STM32F051K4T6 не работает TIM1 PWM. Такое впечатление, что что-то не так с таймером, будто бы его вообще нет, или на ногах нет функции PWM. Подскажите, в чём дело ? Заранее спасибо! //Инициализация порта GPIOA->MODER &= ~(GPIO_MODER_MODER8_0 | GPIO_MODER_MODER9_0 | GPIO_MODER_MODER10_0 | GPIO_MODER_MODER11_0); GPIOA->MODER |= (GPIO_MODER_MODER8_1 | GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1 | GPIO_MODER_MODER11_1); GPIOA->OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR8 | GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER_OSPEEDR10 | GPIO_OSPEEDER_OSPEEDR11); GPIOA->AFR[1]|=(2<<0); //TIM1_CH1 GPIOA->AFR[1]|=(2<<4); //TIM1_CH2 GPIOA->AFR[1]|=(2<<8); //TIM1_CH3 GPIOA->AFR[1]|=(2<<12); //TIM1_CH4 //Инициализация таймера RCC->APB2ENR|=RCC_APB2ENR_TIM1EN; //включили тактирование TIM1 RCC->APB2RSTR|=RCC_APB2RSTR_TIM1RST; //сброс настроек TIM1 RCC->APB2RSTR&=~RCC_APB2RSTR_TIM1RST; TIM1->CCER|=TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E; TIM1->CCMR1|=TIM_CCMR1_OC1M_1|TIM_CCMR1_OC1M_2; TIM1->CCMR1|=TIM_CCMR1_OC2M_1|TIM_CCMR1_OC2M_2; TIM1->CCMR2|=TIM_CCMR2_OC3M_1|TIM_CCMR2_OC3M_2; TIM1->CCMR2|=TIM_CCMR2_OC4M_1|TIM_CCMR2_OC4M_2; TIM1->ARR=50; TIM1->PSC=0; TIM1->CCR1=25; TIM1->CCR2=0; TIM1->CCR3=0; TIM1->CCR4=0; TIM1->CR1|=TIM_CR1_CEN; //включили таймер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 27 ноября, 2017 Опубликовано 27 ноября, 2017 · Жалоба У первого таймера есть специальный битик MOE в регистре BDTR. Без него никакие выходы не работают. TIM1->BDTR |= TIM_BDTR_MOE; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr Baranov 1 27 ноября, 2017 Опубликовано 27 ноября, 2017 · Жалоба Я не заметил, делаете-ли Вы что-нибудь с битом "Preload Enable". У STM32F051 есть такой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться