STM32F100 ШИМ на PA0
Добавлено: Чт июл 11, 2013 00:02:54
Пытаюсь сгенерировать ШИМ STM32F100 на вывод PA0
Подскажите, что делаю не так ?
Подскажите, что делаю не так ?
Код: Выделить всё
/*Инициализация GPIOA.
Вывод PA0 настраивается для работы с выходом TIM2_CH2*/
RCC->APB2ENR |= (RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN); // Тактирование порта GPIOA и альтернативных функций
GPIOA->CRL |= GPIO_CRL_MODE0; // Максимальная скорость порта = 50 MHz
GPIOA->CRL &= ~GPIO_CRL_CNF0; // Очистка бит CNF[1:0] для PA0 (поскольку после сброса мк задан режим "Input Floating")
GPIOA->CRL |= GPIO_CRL_CNF0_1; // PA0 - выход Push-Pull в режиме альтернативной функции
/*Инициализация таймера TIM2
Для формирования сигнала ШИМ используется канал 2 (TIM2_CH2)*/
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // Тактирование таймера TIM2
TIM2->CR1 |= TIM_CR1_ARPE; // Включен режим предварительной записи регистра автоперезагрузки
TIM2->CCMR1 |= TIM_CCMR1_OC1PE; // Включен режим предварительной загрузки регистра сравнения
TIM2->CCMR1 |= (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1); // 110 - PWM mode 1
TIM2->ARR = 380;//Период выходного сигнала
TIM2->CCR2 = 100;//Длительность импульса
TIM2->CCER |= TIM_CCER_CC1E; // Выход канала захвата/сравнения включен
TIM2->CR1 |= TIM_CR1_CEN;//Старт счета таймера