Перейти к содержанию
    

stm32f3 adc переключить режимы

 

stm32f303cct6, CubeIDE 1.6.1

Где то накосячил, не получается переключится из ADC1_TIM3 в DualMode.

ТКНИТЕ НОСОМ!!!

//------------------------------------
void ADC1_TIM3(void)
{
    //HAL_ADC_Stop(&hadc2);
    ADC1->CR |= ADC_CR_ADSTP;                // ADC stop conversion
    while (ADC1->CR & ADC_CR_ADSTART) {}    // wait till ADC stop work
    ADC2->CR |= ADC_CR_ADSTP;
    while (ADC2->CR & ADC_CR_ADSTART) {}
    ADC1->CR |= ADC_CR_ADDIS;                // ADC disable
    while (ADC1->CR & ADC_CR_ADEN) {}
    ADC2->CR |= ADC_CR_ADDIS;
    while (ADC2->CR & ADC_CR_ADEN) {}

    //ADC1->CFGR = 0x1511;
    ADC1->CFGR = 0;
    ADC1->CFGR |= ADC_CFGR_OVRMOD;
    ADC1->CFGR |= ADC_CFGR_DMAEN;
    ADC1->CFGR |= ADC_CFGR_EXTEN_0;
    ADC1->CFGR |= ADC_RESOLUTION_8B;
    ADC1->CFGR |= ADC_CFGR_EXTSEL_2;
    ADC2->CFGR = 0;

    DMA1_Channel1->CCR &= ~DMA_CCR_EN;            //DMA disable
    while (DMA1_Channel1->CCR & DMA_CCR_EN) {}    // wait

    DMA1_Channel1->CNDTR = 0x400;
    DMA1_Channel1->CPAR = 0x50000040;
    DMA1_Channel1->CMAR = (uint32_t)&buf_adc;
    DMA1->IFCR = 0xFFFFFFFF;
    //DMA1_Channel1->CCR = 0x8E;
    DMA1_Channel1->CCR = 0;
    DMA1_Channel1->CCR |= DMA_CCR_HTIE;
    DMA1_Channel1->CCR |= DMA_CCR_MINC;
    DMA1_Channel1->CCR |= DMA_CCR_TCIE;
    DMA1_Channel1->CCR |= DMA_CCR_TEIE;

    DMA1_Channel1->CCR |= DMA_CCR_EN;        //DMA enable
    ADC1->CR |= ADC_CR_ADEN;                // enable the ADC
    ADC1->CR |= ADC_CR_ADSTART;                // start ADC conversion
}
//------------------------------------
void DualMode(void)
{
    ADC1->CR |= ADC_CR_ADSTP;                // ADC stop conversion
    while (ADC1->CR & ADC_CR_ADSTART) {}    // wait till ADC stop work
    ADC2->CR |= ADC_CR_ADSTP;
    while (ADC2->CR & ADC_CR_ADSTART) {}
    ADC1->CR |= ADC_CR_ADDIS;                // ADC disable
    while (ADC1->CR & ADC_CR_ADEN) {}
    ADC2->CR |= ADC_CR_ADDIS;
    while (ADC2->CR & ADC_CR_ADEN) {}

    //ADC1->CFGR = 0x3010;
    ADC1->CFGR = 0;
    ADC1->CFGR |= ADC_CFGR_OVRMOD;
    ADC1->CFGR |= ADC_RESOLUTION_8B;
    ADC1->CFGR |= ADC_CFGR_CONT;
    ADC2->CFGR = 0x3010;

    //ADC1_2_COMMON->CCR = 0x1C407;
    ADC1_2_COMMON->CCR = 0;
    ADC1_2_COMMON->CCR |= ADC_CCR_CKMODE;
    ADC1_2_COMMON->CCR |= ADC_CCR_DELAY_2;
    ADC1_2_COMMON->CCR |= ADC_CCR_MDMA;
    ADC1_2_COMMON->CCR |= ADC_CCR_MULTI_0 |ADC_CCR_MULTI_1 |ADC_CCR_MULTI_2;

    DMA1_Channel1->CCR &= ~DMA_CCR_EN;            //DMA disable

    DMA1_Channel1->CMAR = (uint32_t)&dual_adc;
    DMA1_Channel1->CNDTR = 0x200;
    DMA1_Channel1->CPAR = 0x5000030C;
    DMA1->IFCR = 0xFFFFFFFF;
    DMA1_Channel1->CCR = 0x58E;

    DMA1_Channel1->CCR |= DMA_CCR_EN;        //DMA enable
    ADC1->CR |= ADC_CR_ADEN;                // enable the ADC
    ADC1->CR |= ADC_CR_ADSTART;
    ADC2->CR |= ADC_CR_ADEN;
    ADC2->CR |= ADC_CR_ADSTART;
}
//------------------------------------

TIM3 останавливается в main()

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...