STM32ADC三重规则采样定时器加DMA怎么ADC1一直有OVR溢出

#include "mmm.h"
#define SEND_BUF_SIZE 3	//·¢ËÍÊý¾Ý³¤¶È,×îºÃµÈÓÚsizeof(TEXT_TO_SEND)+2µÄÕûÊý±¶.
u8 SendBuff[SEND_BUF_SIZE];
u8 SndBuff[SEND_BUF_SIZE];

void ADC_GPIO_Init(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA ,ENABLE);
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_0|GPIO_Pin_2;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;
	GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL	;//BUÉÏÏÂÀ­
	//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure); 
	

	
	
}

//u32 par,u32 mar,u16 ndtr
void ADC_DMA_Init(void)
{

	NVIC_InitTypeDef NVIC_InitStructure;
  NVIC_InitStructure.NVIC_IRQChannel=DMA2_Stream0_IRQn;   
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//ÇÀÕ¼
  NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//ÏàÓ¦
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
	
	
	
  DMA_InitTypeDef DMA_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2,ENABLE);            
  DMA_DeInit(DMA2_Stream0);//½«dma2µÄ0¼Ä´æÆ÷ÉèΪȱʡֵ»Ø¸´Ä¬ÈÏ״̬
	//ADC_CDR_ADDR
	DMA_InitStructure.DMA_Channel = DMA_Channel_0;  //ͨµÀÑ¡Ôñ
  DMA_InitStructure.DMA_PeripheralBaseAddr =(uint32_t)(0x40012300+0x08);//DMAÍâÉèµØÖ·
  DMA_InitStructure.DMA_Memory0BaseAddr =(uint32_t)SendBuff; //DMA ´æ´¢Æ÷0µØÖ·
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;//ÍâÉèµ¹´æ´¢Æ÷
  DMA_InitStructure.DMA_BufferSize =SEND_BUF_SIZE;//Êý¾Ý´«ÊäÁ¿3 
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//ÍâÉè·ÇÔöÁ¿Ä£Ê½
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//´æ´¢Æ÷ÔöÁ¿Ä£Ê½
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;//ÍâÉèÊý¾Ý³¤¶È:8λ
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;//´æ´¢Æ÷Êý¾Ý³¤¶È:8λ
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;// ʹÓÃÑ­»·Ä£Ê½ 
  DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;//¸ßÓÅÏȼ¶
  DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;         
  DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
  DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;//´æ´¢Æ÷Í»·¢µ¥´Î´«Êä
  DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;//ÍâÉèÍ»·¢µ¥´Î´«Êä
  DMA_Init(DMA2_Stream0, &DMA_InitStructure);//³õʼ»¯DMA Stream
	
	//DMA_DoubleBufferModeConfig(DMA2_Stream0,(uint32_t)SndBuff,DMA_Memory_0);//DMA_Memory_0?????
  //DMA_DoubleBufferModeCmd(DMA2_Stream0,ENABLE);

	DMA_Cmd(DMA2_Stream0,ENABLE);//ʹÄÜdma2
	//ÉèÖÃdmaÖжÏ
	DMA_ClearITPendingBit(DMA2_Stream0, DMA_IT_TC);//Çå³ýÖжϱêÖ¾
	DMA_ITConfig(DMA2_Stream0, DMA_IT_TC, ENABLE); //ÅäÖÃÖжÏʹÄÜ
} 


void Adc_Init(void)
{
 ADC_InitTypeDef ADC_InitStructure;
 ADC_CommonInitTypeDef ADC_CommonInitStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2,ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);
//ADC1£¬2£¬3¸´Î»ºÍ½áÊøADC_DeInit(ADC1)
  //ADC_DeInit(ADC);
	//ADC_DeInit(RCC_APB2Periph_ADC2);
	//ADC_DeInit(RCC_APB2Periph_ADC3);
	RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,ENABLE);	  //ADC1¸´Î»
	RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,DISABLE);	//¸´Î»½áÊø
  RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC2,ENABLE);	  //ADC1¸´Î»
	RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC2,DISABLE);	//¸´Î»½áÊø
	RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3,ENABLE);	  //ADC1¸´Î»
	RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3,DISABLE);	//¸´Î»½áÊø		
	
//ADCcommon½á¹¹Ìå³õʼ»¯	
	ADC_CommonInitStructure.ADC_DMAAccessMode= ADC_DMAAccessMode_1 ;//DMAģʽ²ÉÓÃÒ»¸ö½ÓÒ»¸ö
	ADC_CommonInitStructure.ADC_Mode=ADC_TripleMode_RegSimult;//3ÖØÄ£Ê½
	ADC_CommonInitStructure.ADC_Prescaler=ADC_Prescaler_Div4;//4·ÖƵ84/4=21M²»¸ßÓÚ36
	ADC_CommonInitStructure.ADC_TwoSamplingDelay=ADC_TwoSamplingDelay_5Cycles;//½»ÌæÄ£Ê½ÓÐÓÃÁ½¸öadc²ÉÑù¼ä¸ôʱ¼ä£¬adc½»Ìæ²É¼¯ÓÐЧ
	ADC_CommonInit(&ADC_CommonInitStructure);
	
	ADC_StructInit(&ADC_InitStructure);//³õʼ»¯Ò»±éadc
	ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//Á¬Ðø
	ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ÓÒ¶ÔÆë	
	ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T3_TRGO ;//²»¶®
	ADC_InitStructure.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_Rising;//ÉÏÉýÑØ´¥·¢
	ADC_InitStructure.ADC_NbrOfConversion=1;//ת»»Í¨µÀ1¸÷
  ADC_InitStructure.ADC_Resolution=ADC_Resolution_12b;
	ADC_InitStructure.ADC_ScanConvMode=DISABLE;//ÒòΪÿ¸öadc1¸÷ͨµÀ
	
	
	ADC_Init(ADC1,&ADC_InitStructure);
	ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_15Cycles);//ÅäÖÃADC1ͨµÀ1£¬Í¨µÀת»»Ë³ÐòΪ1£¬3¸÷²ÉÑùʱ¼ä
	
	ADC_Init(ADC2,&ADC_InitStructure);
	ADC_RegularChannelConfig(ADC2,ADC_Channel_1,1,ADC_SampleTime_15Cycles);
	
	ADC_Init(ADC3,&ADC_InitStructure);
	ADC_RegularChannelConfig(ADC3,ADC_Channel_2,1,ADC_SampleTime_15Cycles);

	ADC_Cmd(ADC3,ENABLE);
	ADC_Cmd(ADC1,ENABLE);
	ADC_Cmd(ADC2,ENABLE);

  
	//ADC_ExternalTrigConvCmdÕâ¸öÍⲿ´¥·¢Ê¹ÄÜûµÃADC_ExternalTrigConvCmd
	ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE);//Á¬ÐøÊ¹ÄÜDMA
  ADC_DMACmd(ADC1, ENABLE);//ʹÄÜ


}



void TIM3_ADC_Init(u16 arr,u16 psc)
{ 
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
 NVIC_InitTypeDef NVIC_InitStructure;
 NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;   
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//ÇÀÕ¼
 NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//ÏàÓ¦
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
	
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
 TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;//ʱÖÓ·ÖÆµÒò×Ó
 TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//ÏòÉϼÆÊý
 TIM_TimeBaseInitStruct.TIM_Period=arr;//×Ô¶¯ÖØ×°ÔØÖµ
 TIM_TimeBaseInitStruct.TIM_Prescaler=psc;//¶¨Ê±Æ÷·ÖƵ
 TIM_TimeBaseInitStruct.TIM_RepetitionCounter	=0;//ÖØ¸´¼ÆÊýÆ÷
 TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);	//³õʼ»¯TIM3
	//ʹÄܶ¨Ê±Æ÷ÖжÏ
	TIM_ARRPreloadConfig(TIM3, ENABLE);//ÔÊÐí¶¨Ê±Æ÷ÖØÔØ
  TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);//Ñ¡ÔñTM3µÄUpDATAʼþΪ¸üÐÂÔ´
	TIM_ITConfig(TIM3,TIM_IT_Update|TIM_IT_Trigger,ENABLE); //ÔÊÐí¶¨Ê±Æ÷3¸üÐÂÖжÏ
	TIM_Cmd(TIM3, ENABLE); 
}


void DMA2_Stream0_IRQHandler() 
{

	 if(DMA_GetITStatus(DMA2_Stream0,DMA_IT_TCIF0))//ÅжÏdma´«ÊäÍê³É
	  
	  //printf("%.2f  ",SendBuff[0]*3.3/4096);
	  //printf("%.2f   ",SendBuff[1]*3.3/4096);
	  //printf("%.2f   ",SendBuff[2]*3.3/4096);DMA1_IT_TC1 DMA1_FLAG_TC1

	 //ADC_ClearITPendingBit(ADC1,ADC_IT_OVR);
	 DMA_ClearITPendingBit(DMA2_Stream0, DMA_IT_TC);
}



void TIM3_IRQHandler (void)
{
 if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
	 // ADC_SoftwareStartConv
  
   TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
   //TIM_ClearITPendingBit(TIM3,TIM_IT_Trigger);DMA_IT_TC
 
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^