[mw_shl_code=c,true]#define ADC1_DR_Address ((uint32_t)0x4001204C) //ADC1???????????÷???·
//?¨????×é????????ADC????????
u16 ADC_RCVTab[16];
//ADC??????????GPIOA??
void ADC_DMA_Init(void)
{
RCC->APB2ENR|=1<<8; //????ADC1?±??
RCC->AHB1ENR|=1<<0; //????PORTA?±??
GPIO_Set(GPIOA,PIN0|PIN1|PIN2|PIN3|PIN4|PIN5|PIN6|PIN7,GPIO_MODE_AIN,0,0,GPIO_PUPD_PU); //PA5,????????,????
RCC->APB2RSTR|=1<<8; //ADCs????
RCC->APB2RSTR&=~(1<<8); //?????á??
ADC->CCR=0<<16; //?è????2·???????????72MHz ADCCLK=PCLK2/4=84/4=21Mhz,ADC?±??×???????????36Mhz
//ADC1????????DMA2???¨??0
RCC->AHB1ENR|=1<<22; //????DMA2?±??
DMA2_Stream0->CR &= ~(1<<0);//?????÷????
while(DMA2_Stream0->CR&0x01);//?????????÷?????????÷?????????????????÷??????????????????????
DMA2->HIFCR |= 0xffff;//??1????×????????÷??????
DMA2->LIFCR |= 0xffff;//??1????×????????÷??????
DMA2_Stream0->

AR = ADC1_DR_Address;//?¨??DMA???è?ù???·??ADC1
DMA2_Stream0->M0AR = (uint32_t)&ADC_RCVTab;//?¨??DMA?????ù???·
DMA2_Stream0->NDTR = 4;//????????????????×???
DMA2_Stream0->CR &=~(0x7<<25);//?????¨??0 //±??????¨??0???????÷0????ADC1???¨??
DMA2_Stream0->CR &=~(1<<5);//PFCTRL????????±ê??DMA???÷?????÷??????±ê?????è???÷?????÷
DMA2_Stream0->CR &=~(0x3<<6);//DIR[1:0]????????·??ò???????è??00±ê?????è???????÷
DMA2_Stream0->CR |=(1<<8);//????CIRC???·????
DMA2_Stream0->CR &=~(1<<9);//???è???·???????¨PINC
DMA2_Stream0->CR |=(1<<10);//MINC?????????ó?????÷???????????????ó????MSIZE
DMA2_Stream0->CR |=(1<<11);//PSIZE
DMA2_Stream0->CR &=~(1<<12);//11??12?????????????è?????ó??16??
DMA2_Stream0->CR |=(1<<13);//MSIZE
DMA2_Stream0->CR &=~(1<<14);//13??14???????????????÷?????ó??16??
//15?????±??????????????
DMA2_Stream0->CR |=(0x3<<16);//??????×???
DMA2_Stream0->CR &=~(1<<18);//?????á????????????????
//19??????????????
//??·?????????????????????????
DMA2_Stream0->FCR |=(0x3<<0);//FIFO·§?????????????ê??????
DMA2_Stream0->FCR &=~(1<<2);//?????±??????
DMA2_Stream0->CR |= 1<<0;//????DMA?????÷????
//??????ADC????????
ADC1->CR1=0; //CR1?è??????
ADC1->CR2=0; //CR2?è??????
ADC1->CR1 &=~(0x3<<24); //12??????
ADC1->CR1|=1<<8; //?¨?è????
ADC1->CR2|=1<<1; //????×???????
ADC1->CR2&=~(1<<11); //??????
ADC1->CR2|=0<<28; //?í????·? ???
ADC1->SQR1|=(0x4<<20);//?????¨???è??
ADC1->SQR1&=~(1<<20); //4??×????????ò?ò????
ADC1->SQR1&=~(1<<21); //4??×????????ò?ò????
ADC1->SQR1&=~(1<<23); //4??×????????ò?ò????
ADC1->SMPR2 =0;//???ù?????????÷?????????ù?????è????×???3??????
// ADC1->SMPR2 |=0x7;//???ù????×??¤
ADC1->CR2|=1<<8;//????DMA×???????
// ADC1->CR2|=1<<9;//DDS
ADC1->CR2|=1<<0; //????AD×????÷?????????????á??ADC????????????
ADC1->SQR3&=0x0;//
//??SQ1??SQ4???÷????????
//??????×??????¨??0
ADC1->SQR3|=0x1<<5; //??????×??????¨??1
ADC1->SQR3|=0x2<<10; //??????×??????¨??2
ADC1->SQR3|=0x3<<15; //??????×??????¨??3
ADC1->CR2|=1<<30; //?í?????????ò×????¨??
}[/mw_shl_code]
[mw_shl_code=c,true]主函数:循环如下[/mw_shl_code]
[mw_shl_code=c,true]
[mw_shl_code=c,true] while(1)
{
printf("\r\n");
printf("%d",ADC_RCVTab[0]);
printf("\t");
printf("%d",ADC_RCVTab[1]);
printf("\t");
printf("%d",ADC_RCVTab[2]);
printf("\t");
printf("%d",ADC_RCVTab[3]);
printf("\t");
LED0=!LED0;
delay_ms(250);
}
[/mw_shl_code]
[/mw_shl_code]