#include "adc.h"
void Adc_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_ADC1 , ENABLE );
//RCC_APB2Periph_GPIOx,x=GPIOx
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //72M/6=12,ADC×??ó?±??????????14M
//PA0--ADC_IN0  

A1--ADC_IN1  

A2--ADC_IN2  

A3--ADC_IN3  

A4--ADC_IN4  

A5--ADC_IN5  

A6--ADC_IN6  

A7--ADC_IN7
//PB0--ADC_IN8  

B1--ADC_IN9  

C0--ADC_IN10  

C1--ADC_IN11 PC2--ADC_IN12 PC3--ADC_IN13 PC4--ADC_IN14 PC5--ADC_IN15
//PA0~3 4?·×÷???????¨??????????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //PA0/1/2/3 ×÷???????¨??????????
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//------------------------------------ADC?è??--------------------------------------------------------
ADC_DeInit(ADC1); //?????è ADC1 ???????????÷???è???±????
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC?¤×÷????:ADC1??ADC2?¤×÷??????????
ADC_InitStructure.ADC_ScanConvMode =DISABLE; //?à?????¨?è????
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //????×????¤×÷??????×???????
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //??????·?×?????±?
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC??????????
ADC_InitStructure.ADC_NbrOfChannel = 1; //??????6???????¨????????1~16?©
ADC_Init(ADC1, &ADC_InitStructure); //?ù??ADC_InitStruct?????¨???????????????èADCx???????÷
//ADC????????????
//ADC1,ADC?¨??x,???ò???ù???ò????y,???ù?±????239.5????
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5 );
// ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 );
// ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 3, ADC_SampleTime_239Cycles5 );
// ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 4, ADC_SampleTime_239Cycles5 );
// ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 5, ADC_SampleTime_239Cycles5 );
// ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 6, ADC_SampleTime_239Cycles5 );
// ????ADC??DMA?§???¨??????DMA?????????è????????DMA?¨?????????©
ADC_DMACmd(ADC1, ENABLE); //????ADC1??DMA????
ADC_Cmd(ADC1, ENABLE); //???????¨??ADC1
ADC_ResetCalibration(ADC1); //???????¨??ADC1????×??????÷
while(ADC_GetResetCalibrationStatus(ADC1)); //????ADC1??????×??????÷??×???,?è??×????ò????
ADC_StartCalibration(ADC1); //???????¨ADC1????×?×???
while(ADC_GetCalibrationStatus(ADC1)); //???????¨ADC1????×????ò,?è??×????ò????
}
#include "dma.h"
#include "usart.h"
//DMA_Channel1-->ADC1
//cndtr?????ù????????????
void DMA_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{ DMA_InitTypeDef DMA_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
DMA_DeInit(DMA_CHx); //??DMA???¨??1?????÷???è???±????
DMA_InitStructure.DMA_PeripheralBaseAddr = cpar; //DMA???èADC?ù???·
DMA_InitStructure.DMA_MemoryBaseAddr = cmar; //DMA?????ù???·
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //????×÷??????????????????
DMA_InitStructure.DMA_BufferSize = cndtr; //DMA?¨????DMA???????????????ó??
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //???è???·?????÷??±?
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //???????·?????÷????
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //?????í????16??
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //?????í????16??
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //???·?¤×÷????
DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMA?¨?? x????????????
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //DMA?¨??x?????è??????????????????
DMA_Init(DMA_CHx, &DMA_InitStructure); //?ù??DMA_InitStruct?????¨????????????DMA???¨??
}