Constantin24 (01.08.2013 10:24, просмотров: 5249) koyodza
Никак не могу понять почему TIM3 не работает на шим. вроде все делаю по аналогии с TIM2. Может кто найдет в коде настройки ошибку... // Тактирование канала С
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
//Настройка вывода 6
//Очистка регистра в соответсвующих битах
GPIOC->CRL &= ~(GPIO_CRL_MODE6 | GPIO_CRL_CNF6);
//Настройка вывода 6 на выход,2МГц(не влияет),push-pull
GPIOC->CRL |= (GPIO_CRL_MODE6_1 | GPIO_CRL_CNF6_1);
//Настройка вывода 7
//Очистка регистра в соответсвующих битах
//GPIOC->CRL &= ~(GPIO_CRL_MODE7 | GPIO_CRL_CNF7);
//Настройка вывода 7 на выход,2МГц(не влияет),push-pull
//GPIOC->CRL |= (GPIO_CRL_MODE7_1 | GPIO_CRL_CNF7_1);
//Разрешить таймеру использовать вывод для ШИМ TIM3_CH1 и TIM3_CH2
TIM3->CCER |= TIM_CCER_CC1E ;
//TIM3->CCER |= TIM_CCER_CC2E;
//настройка ШИМ
//ПРОВЕРИТЬ!!!
TIM3->CCMR1 &= ~(TIM_CCMR1_OC1M);
//TIM3->CCMR1 &= ~(TIM_CCMR1_OC2M); //очистка битов OC2M и OC1M
TIM3->CCMR1|=(TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2); //прямой ШИМ
//TIM3->CCMR1|=(TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2); //прямой ШИМ
//настраиваем предделитель таймера
TIM3->PSC = 72-1; //Внутреняя частота 72МГц
//потолок таймера
TIM3->ARR = 1000;//
//В результате задан ШИМ с периодом 1 мс
//включить отсчсет времени
//Задаем определенное число для ШИМ
TIM3->CCR1=160; // заполнение ШИМ=160мкс - минимум, начальная установка
//TIM3->CCR2=660; // заполнение ШИМ=160мкс - минимум, начальная установка
TIM3->CR1 |= TIM_CR1_ARPE;
TIM3->CR1 |= TIM_CR1_CEN;