Страницы

Страницы

суббота, 29 ноября 2014 г.

ШИМ по двум каналам на TIM1

RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;  //такты
TIM1->CCER = 0;                     //обнуляем CCER (выключаем каналы)
TIM1->ARR = 100;                 // максимальное значение, до которого таймер ведет счет 
TIM1->PSC = 7200-1;                // предделитель         
TIM1->BDTR |= TIM_BDTR_MOE;     // Разрешаем вывод сигнала на выводы
//для первого ШИМ-сигнала используем канал 1 
//задаем скважность в регистр сравнения канала (значения от 0 до TIM1->ARR) 
TIM1->CCR1 = 50;      
// Включаем режим канал в режим ШИМ           
TIM1->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2;     
// Разрешаем вывод не инвертированного сигнала на ногу МК     
TIM1->CCER |= TIM_CCER_CC1E;     
// Разрешаем вывод не инвертированного сигнала на ногу МК 
//для второго ШИМ-сигнала используем канал 4
//задаем скважность в регистр сравнения канала (значения от 0 до TIM1->ARR)   
TIM1
->CCR4 = 50;                   
// Включаем канал в режим ШИМ       
TIM1->CCMR2 |= TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2;     
// Разрешаем вывод не инвертированного сигнала на ногу МК
TIM1
->CCER |= TIM_CCER_CC4E;     
// Запускаем счет
TIM1
->CR1 |= TIM_CR1_CEN;



Теперь для управления скважностью нужного канала меняем значения в регистрах TIM1->CCR1 и TIM1->CCR4. Т.к. у нас глубина счета установлена 100, то задавая значение от 0 до 100 получим скважность в процентах :)

2 комментария: