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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 394
Зарегистрирован: Сб апр 28, 2012 16:04:14

Сообщение 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;  // запуск таимера
}
Критикуешь - предлагай. Предлагаешь - делай. Делаешь - отвечай.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

sx386 писал(а):Пытаюсь запустить ШИМ на 3-м таймере.
Вывод PA7
Чип какой ? В 100,103 и т.д. например на PA7 без ремапа MOSI сидит...
Последний раз редактировалось dosikus Сб окт 19, 2013 19:29:21, всего редактировалось 1 раз.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 394
Зарегистрирован: Сб апр 28, 2012 16:04:14

Сообщение 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;//Старт счета таймера
Критикуешь - предлагай. Предлагаешь - делай. Делаешь - отвечай.
Ответить

Вернуться в «ARM»