Страница 1 из 1

STM32F100 ШИМ на 3 таймере

Добавлено: Сб окт 19, 2013 16:20:39
sx386
Пытаюсь запустить ШИМ на 3-м таймере.
Вывод PA7
Подскажите что делаю не так.

Код: Выделить всё

// инициализация ШИМ подсветки дисплея
void InitShimDisplay (void) {
  
   // настроика порта PA7
   GPIOA->CRL |= GPIO_CRL_MODE7;  // максимальная скорость порта = 50 MHz
   GPIOA->CRL &= ~GPIO_CRL_CNF7;  // очистка бит CNF [1:0]. поскольку после сброса мк задан режим "Input Floating"
   GPIOA->CRL |= GPIO_CRL_CNF7_1;  // выход Push-Pull в режиме альтернативной функции

   // инициализация таимера. используется канал 2
   RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;  // тактирование таимера
   TIM3->CCER |= TIM_CCER_CC2E;  // использование канала 2
   TIM3->CCMR1 |= (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1);  // 110 - PWM mode 1
   TIM3->ARR = 500;  // период выходного сигнала
   TIM3->CCR1 = 250;  // длительность сигнала
   TIM3->CR1 |= TIM_CR1_CEN;  // запуск таимера
}

Re: STM32F100 ШИМ на 3 таймере

Добавлено: Сб окт 19, 2013 17:32:51
dosikus
sx386 писал(а):Пытаюсь запустить ШИМ на 3-м таймере.
Вывод PA7
Чип какой ? В 100,103 и т.д. например на PA7 без ремапа MOSI сидит...

Re: STM32F100 ШИМ на 3 таймере

Добавлено: Сб окт 19, 2013 18:30:29
sx386
STM32F100

Разобрался:

Код: Выделить всё

  /*Инициализация таймера
  Для формирования сигнала ШИМ используется канал 2 */
  RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;//Тактирование таймера 
  TIM3->CR1 |= TIM_CR1_ARPE;//Включен режим предварительной записи регистра автоперезагрузки
  TIM3->CCMR1 |= TIM_CCMR1_OC2PE;//Включен режим предварительной загрузки регистра сравнения
  TIM3->CCMR1 |= (TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1);//OC2M = 110 - PWM mode 1
  TIM3->ARR = 23999;//Период выходного сигнала T = 1mS
  TIM3->CCR2 = 3000;//Длительность импульса. В данном случае Duty cycle = 80%
  TIM3->CCER |= TIM_CCER_CC2E;//Выход канала захвата/сравнения включен
  TIM3->CR1 |= TIM_CR1_CEN;//Старт счета таймера