void _ADC_Init(void) { ADC_InitTypeDef ADC_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStruct; //Enabling ADC clock RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2, ENABLE); //ADC common init configuration for Multi mode ADC ADC_CommonInitStruct.ADC_Mode = ADC_DualMode_RegSimult; ADC_CommonInitStruct.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; //ADC_DMAAccessMode_Disabled; ADC_DMAAccessMode_1; ADC_DMAAccessMode_2; ADC_DMAAccessMode_3 ADC_CommonInitStruct.ADC_Prescaler = ADC_Prescaler_Div2; //ADC_Prescaler_Div2; ADC_Prescaler_Div4; ADC_Prescaler_Div6; ADC_Prescaler_Div8 ADC_CommonInitStruct.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; //ADC_TwoSamplingDelay_5Cycles - i tak dalej po 1 do 20 cykli ADC_CommonInit(&ADC_CommonInitStruct); //ADC1 configuration ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; //Timer ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising; ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_Init(ADC1,&ADC_InitStructure); //ADC2 configuration ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; //Timer ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising; ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_Init(ADC2,&ADC_InitStructure); //Regular channels config ADC_RegularChannelConfig(ADC1,ADC_Channel_9,1,ADC_SampleTime_144Cycles); ADC_RegularChannelConfig(ADC2,ADC_Channel_2,1,ADC_SampleTime_144Cycles); //DMA for Multi mode ADC ADC_MultiModeDMARequestAfterLastTransferCmd(ENABLE); //Activating continuous mode ADC_ContinuousModeCmd(ADC1, ENABLE); ADC_ContinuousModeCmd(ADC2, ENABLE); //Enabling ADC ADC_Cmd(ADC1, ENABLE); ADC_Cmd(ADC2, ENABLE); ADC_SoftwareStartConv(ADC1); ADC_SoftwareStartConv(ADC2); }
void initial_adc_dma_for_mosfet_test(void) { DMA_InitTypeDef DMA_InitStructure; // Set the TIM1 Trgo as the ADC trigger ADC1->CFGR1 |= ADC_ExternalTrigConvEdge_Rising; ADC1->CFGR1 &= ~ADC_ExternalTrigConv_T1_CC4; ADC1->CFGR1 |= ADC_ExternalTrigConv_T1_TRGO; ADC_ITConfig(ADC1, ADC_IT_EOSEQ, DISABLE); // Continuous mode // When tim1 update trigger the convert ADC_ContinuousModeCmd(ADC1, ENABLE); // Reconfig ADC DMA buffer DMA_DeInit(DMA1_Channel1); ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_OneShot); DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_Address; DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)adc_buffer_for_mosfet_test; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize = 50; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA1_Channel1, &DMA_InitStructure); DMA_Cmd(DMA1_Channel1, ENABLE); }
void pots_adcInit(){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); GPIO_InitTypeDef gpioInitStruct; gpioInitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; gpioInitStruct.GPIO_Mode = GPIO_Mode_AN; gpioInitStruct.GPIO_OType = GPIO_OType_PP; gpioInitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; gpioInitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &gpioInitStruct); GPIO_Init(GPIOC, &gpioInitStruct); ADC_CommonInitTypeDef adcCommonInitStruct; adcCommonInitStruct.ADC_Mode = ADC_Mode_Independent; adcCommonInitStruct.ADC_Prescaler = ADC_Prescaler_Div2; adcCommonInitStruct.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; adcCommonInitStruct.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; ADC_CommonInit(&adcCommonInitStruct); ADC_InitTypeDef adcInitStruct; adcInitStruct.ADC_Resolution = ADC_Resolution_12b; adcInitStruct.ADC_ScanConvMode = ENABLE; adcInitStruct.ADC_ContinuousConvMode = ENABLE; adcInitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; adcInitStruct.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; adcInitStruct.ADC_DataAlign = ADC_DataAlign_Right; adcInitStruct.ADC_NbrOfConversion = POTS_NUMBER; ADC_Init(ADC1,&adcInitStruct); ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_480Cycles); // pc0 ADC_RegularChannelConfig(ADC1,ADC_Channel_11,2,ADC_SampleTime_480Cycles); // pc1 ADC_RegularChannelConfig(ADC1,ADC_Channel_12,3,ADC_SampleTime_480Cycles); // pc2 ADC_RegularChannelConfig(ADC1,ADC_Channel_13,4,ADC_SampleTime_480Cycles); // pc3 ADC_RegularChannelConfig(ADC1,ADC_Channel_0,5,ADC_SampleTime_480Cycles); // pa0 ADC_RegularChannelConfig(ADC1,ADC_Channel_1,6,ADC_SampleTime_480Cycles); // pa1 ADC_RegularChannelConfig(ADC1,ADC_Channel_2,7,ADC_SampleTime_480Cycles); // pa2 ADC_RegularChannelConfig(ADC1,ADC_Channel_3,8,ADC_SampleTime_480Cycles); // pa3 ADC_ContinuousModeCmd(ADC1,ENABLE); }
void init_ADC(void) { RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1ENR_GPIOAEN, ENABLE); GPIO_InitTypeDef gpini[1] = {{0}}; gpini->GPIO_Pin = GPIO_Pin_0; gpini->GPIO_Mode = GPIO_Mode_AIN; gpini->GPIO_Speed = GPIO_Speed_2MHz; gpini->GPIO_OType = GPIO_OType_PP; gpini->GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, gpini); ADC_InitTypeDef ini[1] = {{0}}; ADC_StructInit(ini); // must be 30MHz max ini->ADC_Resolution = ADC_Resolution_12b; ini->ADC_ScanConvMode = DISABLE; ini->ADC_ContinuousConvMode = ENABLE; ini->ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ini->ADC_ExternalTrigConv = ADC_ExternalTrigConv_T8_TRGO; // Don't care ini->ADC_DataAlign = ADC_DataAlign_Left; ini->ADC_NbrOfConversion = 1; ADC_CommonInitTypeDef inic[1] = {{0}}; ADC_CommonStructInit(inic); inic->ADC_Mode = ADC_Mode_Independent; inic->ADC_Prescaler = ADC_Prescaler_Div8; inic->ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; inic->ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles; // don't care ADC_DeInit(); ADC_CommonInit(inic); ADC_Init(ADC1, ini); ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_480Cycles); ADC_ContinuousModeCmd(ADC1, ENABLE); ADC_EOCOnEachRegularChannelCmd(ADC1, DISABLE); ADC_Cmd(ADC1, ENABLE); ADC_SoftwareStartConv(ADC1); }
void ADC_init_all() { //variables DMA_InitTypeDef DMA_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); //RCC_AHB1PeriphClockCmd(RCC_AHB1ENR_GPIOCEN, ENABLE); ADC_DeInit(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2; ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_10Cycles; ADC_CommonInit(&ADC_CommonInitStructure); ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = ENABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion = 3; ADC_Init(ADC1, &ADC_InitStructure); ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_84Cycles); ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_84Cycles); ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 3, ADC_SampleTime_84Cycles); // DMA DMA_DeInit(DMA2_Stream4);//Can be used for ADC1 DMA_InitStructure.DMA_Channel = 0;//Can be used for ADC1 DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t) &ADC1->DR; DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t) &ADC_DMA_buffer; //DMA buffer Address DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;//From ADC to memory DMA_InitStructure.DMA_BufferSize = 3;// 3 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA2_Stream4, &DMA_InitStructure); DMA_Cmd(DMA2_Stream4, ENABLE); while(DMA_GetCmdStatus(DMA2_Stream4)==DISABLE){}; ADC_DMACmd(ADC1, ENABLE); ADC_Cmd(ADC1, ENABLE); ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE); ADC_ContinuousModeCmd(ADC1,ENABLE); ADC_SoftwareStartConv(ADC1); median_filter_init(); }
/*=====================================================================================================*/ void ADC_Config( void ) { DMA_InitTypeDef DMA_InitStruct; ADC_InitTypeDef ADC_InitStruct; ADC_CommonInitTypeDef ADC_CommonInitStruct; GPIO_InitTypeDef GPIO_InitStruct; /* ADC Clk Init *************************************************************/ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); /* ADC_I PA4 */ /* ADC_V PA5 */ GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStruct); /* ADC DMA Init *************************************************************/ DMA_InitStruct.DMA_Channel = DMA_Channel_0; DMA_InitStruct.DMA_PeripheralBaseAddr = (u32)ADC1_DR_ADDRESS; // Peripheral address DMA_InitStruct.DMA_Memory0BaseAddr = (u32)&ADC_DMA_Buf; // Memory address DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralToMemory; // Peripheral to Memory DMA_InitStruct.DMA_BufferSize = ADC_Sample*ADC_Channel; // Memory Buffer Size DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // Peripheral address 遞增 Disable DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable; // Memory address 遞增 Enable DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; // Peripheral Data Size 16bit DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; // Memory Data Size 16bit DMA_InitStruct.DMA_Mode = DMA_Mode_Circular; // 循環模式 Enable DMA_InitStruct.DMA_Priority = DMA_Priority_High; // ADC DMA通道 高優先級 DMA_InitStruct.DMA_FIFOMode = DMA_FIFOMode_Disable; // DMA FIFO Disable DMA_InitStruct.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; DMA_InitStruct.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStruct.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA2_Stream0, &DMA_InitStruct); DMA_Cmd(DMA2_Stream0, ENABLE); /* ADC Common Init **********************************************************/ ADC_CommonInitStruct.ADC_Mode = ADC_Mode_Independent; // 獨立模式 ADC_CommonInitStruct.ADC_Prescaler = ADC_Prescaler_Div2; // 預分頻2 ADC_CommonInitStruct.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; // ADC DMA Mode Disable ADC_CommonInitStruct.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; // 轉換延遲時間 ADC_CommonInit(&ADC_CommonInitStruct); /* ADC Init *****************************************************************/ ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b; // 解析度 12bit ADC_InitStruct.ADC_ScanConvMode = ENABLE; // 掃描模式 ADC_InitStruct.ADC_ContinuousConvMode = ENABLE; // 連續轉換模式 ADC_InitStruct.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; // 外部觸發 Disable ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right; // ADC數據右對齊 ADC_InitStruct.ADC_NbrOfConversion = ADC_Channel; // 轉換ADC通道數目 ADC_Init(ADC1, &ADC_InitStruct); /* ADC Regular Config *******************************************************/ ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 1, ADC_SampleTime_3Cycles); // ADC_I ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 2, ADC_SampleTime_3Cycles); // ADC_V ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE); ADC_DMACmd(ADC1, ENABLE); ADC_ContinuousModeCmd(ADC1, ENABLE); ADC_Cmd(ADC1, ENABLE); ADC_SoftwareStartConv(ADC1); }
void SENSOR_Force_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; DMA_InitTypeDef DMA_InitStructure; /* GPIO Config ------------------------------------------------------------------*/ /* Enable GPIOF Clock */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); // Configure ADC3 Channel13 pin as analog input for New Force sensors' (1,2,3,4) I/Os GPIO_StructInit(&GPIO_InitStructure); // Reset init structure, if not it can cause issues... //ADC3 CH9 CH14 CH15 CH4 CH5 CH6 CH7 CH8 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6| GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_Init(GPIOF, &GPIO_InitStructure); /* DMA2 Config ------------------------------------------------------------------*/ /* Enable DMA2 Clock */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); /* DMA2 Stream0 channel0 configuration */ DMA_DeInit(DMA2_Stream1); DMA_InitStructure.DMA_Channel = DMA_Channel_2; DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC3_DR_ADDRESS; DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&ADC3ConvertedValue; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; DMA_InitStructure.DMA_BufferSize = 8; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA2_Stream1, &DMA_InitStructure); DMA_Cmd(DMA2_Stream1, ENABLE); /* ADC Config -------------------------------------------------------------------*/ /* Enable ADC3 Clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE); /* ADC Common Init */ ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4; ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_1; // //ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_15Cycles; ADC_CommonInit(&ADC_CommonInitStructure); /* ADC1 Init */ ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; //ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ScanConvMode = ENABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; // gtz02nov ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; //gtz01nov ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_InitStructure.ADC_NbrOfConversion = 8; ADC_Init(ADC3, &ADC_InitStructure); /* ADC3 regular channelx configuration */ ADC_RegularChannelConfig(ADC3, ADC_Channel_9, 1, ADC_SampleTime_144Cycles);// PF3 ADC_RegularChannelConfig(ADC3, ADC_Channel_14, 2, ADC_SampleTime_144Cycles);// PF4 ADC_RegularChannelConfig(ADC3, ADC_Channel_15, 3, ADC_SampleTime_144Cycles);// PF5 ADC_RegularChannelConfig(ADC3, ADC_Channel_4, 4, ADC_SampleTime_144Cycles);// PF6 ADC_RegularChannelConfig(ADC3, ADC_Channel_5, 5, ADC_SampleTime_144Cycles);// PF7 ADC_RegularChannelConfig(ADC3, ADC_Channel_6, 6, ADC_SampleTime_144Cycles);// PF8 ADC_RegularChannelConfig(ADC3, ADC_Channel_7, 7, ADC_SampleTime_144Cycles);// PF9 ADC_RegularChannelConfig(ADC3, ADC_Channel_8, 8, ADC_SampleTime_144Cycles);// PF10 /* Enable DMA request after last transfer (Single-ADC mode) */ ADC_DMARequestAfterLastTransferCmd(ADC3, ENABLE);//gtz01nov ADC_ContinuousModeCmd(ADC3, ENABLE); /* Enable ADC3 DMA */ ADC_DMACmd(ADC3, ENABLE); /* Enable ADC3 */ ADC_Cmd(ADC3, ENABLE); /* Start ADC3 Software Conversion */ ADC_SoftwareStartConv(ADC3); }