mihlit1 0 26 апреля, 2021 Опубликовано 26 апреля, 2021 · Жалоба 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() Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться