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 получим скважность в процентах :)
Дякую величезне)
ОтветитьУдалитьСпасибо, Великий, полезнее статьи не найти
ОтветитьУдалить