[求助] STM32F407 外触发双通道adc同步采集没有反应?

2019-07-20 20:45发布

项目要使用F407外触发EXTI_11(规则通道)双路同步ADC采集,试过软件触发没有问题,从EXTI_11输入触发脉冲无反应,代码查不到转换结束标志,也许根本就没有启动转换,帮忙看看是不是哪里配置不对,谢谢了!
adc初始化代码如下:

//初始化ADC                                                                                                                          
void  Adc_Init(void)
{   
  GPIO_InitTypeDef                  GPIO_InitStructure;
        ADC_CommonInitTypeDef ADC_CommonInitStructure;
        ADC_InitTypeDef       ADC_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);                                //使能GPIOA时钟
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);                                //使能GPIOA时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);                                 //使能ADC1时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2, ENABLE);                         //使能ADC1时钟
       
       
          //先初始化ADC1 2通道1 2
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;                         //PA1 通道1
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;                                //模拟输入
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;                        //不带上下拉
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ;  //EXTI_11初始化
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  GPIO_Init(GPIOF, &GPIO_InitStructure);
       
  ADC_CommonInitStructure.ADC_Mode = ADC_DualMode_RegSimult;//双路同步模式
  ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;//两个采样阶段之间的延迟5个时钟
  ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_2; //DMA模式2
  ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4        ;
  ADC_CommonInit(&ADC_CommonInitStructure);                                        //初始化       

  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;                                        //12位模式
        ADC_InitStructure.ADC_ScanConvMode = DISABLE;                                        //扫描模式       
        ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;                                                                //开启连续转换
        ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising;                               //上升沿触发
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_Ext_IT11;                  //外部exti_11触发
       ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;                                                //右对齐       
       ADC_InitStructure.ADC_NbrOfConversion = 1;                                                                //1个转换在规则序列中 也就是只转换规则序列1
       
         ADC_Init(ADC1, &ADC_InitStructure);//ADC1初始化       

        ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;       //上升沿触发
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;  
       
        ADC_Init(ADC2, &ADC_InitStructure);//ADC2初始化       
       

        ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_3Cycles );
        ADC_RegularChannelConfig(ADC2, ADC_Channel_2, 1, ADC_SampleTime_3Cycles );

        ADC_Cmd(ADC1, ENABLE);//开启AD转换器         
        ADC_Cmd(ADC2, ENABLE);//开启AD转换器       

//      ADC_SoftwareStartConv(ADC1);                                        //使能指定的ADC1的软件转换启动功能       
       
}       


void EXTI_Configuration(void)   //配置EXTI_11 pin
{
  EXTI_InitTypeDef EXTI_InitStructure;
  /* EXTI line11 configuration -----------------------------------------------*/  
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Event;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  EXTI_InitStructure.EXTI_Line = EXTI_Line11;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。