Jump to content

    

STM32L0 ADC+TIM

RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
ADC1->CFGR1 |= ADC_CFGR1_EXTEN_0 | ADC_CFGR1_EXTSEL_2 | ADC_CFGR1_CONT | ADC_CFGR1_SCANDIR;
ADC1->CHSELR = ADC_CHSELR_CHSEL9 | ADC_CHSELR_CHSEL17 | ADC_CHSELR_CHSEL18;
ADC1->SMPR |= ADC_SMPR_SMP_0 | ADC_SMPR_SMP_1 | ADC_SMPR_SMP_2;
ADC1->IER |= ADC_IER_EOCIE | ADC_IER_EOSEQIE | ADC_IER_OVRIE;
ADC->CCR |= ADC_CCR_VREFEN | ADC_CCR_TSEN;

NVIC_EnableIRQ(ADC1_COMP_IRQn);
NVIC_SetPriority(ADC1_COMP_IRQn,0);

RCC->APB2ENR |= RCC_APB2ENR_TIM22EN;
TIM22->CR1 = TIM_CR1_URS;
TIM22->CR2 = TIM_CR2_MMS_1;
TIM22->PSC = 32000-1;
TIM22->ARR = 1000-1;

TIM22->CR1 |= TIM_CR1_CEN;

Таймер работает, считает 1 секунду, но не запускает АЦП. Что я делаю неправильно?
Я использовал пример из RM. Я хочу, чтобы АЦП запускался по таймеру, и после приходило прерывание, где я бы забирал результат и так далее.

 

Edited by red-30

Share this post


Link to post
Share on other sites

Может, надо включить АЦП:

ADC1->CR |= ADC_CR_ADEN;

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now