реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32F103, запуск АЦП от таймера
Babadag
сообщение Jul 18 2016, 12:58
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 1-03-16
Пользователь №: 90 675



Пытаюсь запустить АЦП (канал 0) от таймера 2. Не работает...

Код
CODE
// Инициализация АЦП
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
ADC1->CR2 |= ADC_CR2_ADON;
ADC1->CR2 |= ADC_CR2_CAL;
while ((ADC1->CR2 & ADC_CR2_CAL) != 0);
ADC1->CR1 |= ADC_CR1_EOCIE;
NVIC_EnableIRQ(ADC1_2_IRQn);
ADC1->CR2 |= ADC_CR2_EXTTRIG | ADC_CR2_EXTSEL_0 | ADC_CR2_EXTSEL_1;

...

// Инициализация таймера
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
TIM2->PSC = 32000 - 1;
TIM2->ARR = 199;
TIM2->CCMR1 |= TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1;
TIM2->CCR2 = TIM2->ARR;
TIM2->CR1 |= TIM_CR1_CEN;


Запуск АЦП в ручном режиме (через повторный ADC_CR2_ADON) работает. Если у таймера разрешить прерывание CC2IF — срабатывает когда надо. В чём ошибка?

Похоже, проблема в настройке события CC2 от таймера. АЦП прекрасно запускается от таймера 3 при такой инициализации:
CODE
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
TIM3->PSC = 32000 - 1;
TIM3->ARR = 199;
TIM3->CR2 |= TIM_CR2_MMS_1;
TIM3->CR1 |= TIM_CR1_CEN;

Тогда как следует настраивать таймер 2?

Ну блиииин... Всё настроил, а включить забыл. Проблема решилась добавлением строчки
TIM2->CCER |= TIM_CCER_CC2E;

Надо пойти пообедать =)

Сообщение отредактировал Babadag - Jul 18 2016, 11:53
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01327 секунд с 7
ELECTRONIX ©2004-2016