STM32 ADC Timer3_TRGO做外部触发源的示例程序

void myADC_Init() 
 { 
                 ADC_InitTypeDef ADC_InitStruct; 
                 GPIO_InitTypeDef GPIO_InitStruct; 
                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 ,ENABLE); 
                 RCC_ADCCLKConfig(RCC_PCLK2_Div6); 
  
                //ADC1_Init 
                 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_0; 
                 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN; 
                 GPIO_Init(GPIOA,&GPIO_InitStruct); 
                  
                ADC_DeInit(ADC1); 
                 ADC_InitStruct.ADC_Mode = ADC_Mode_Independent; 
                 ADC_InitStruct.ADC_NbrOfChannel = 1; 
                 ADC_InitStruct.ADC_ContinuousConvMode = DISABLE; 
                 ADC_InitStruct.ADC_ScanConvMode = DISABLE; 
                  ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO; 
                 ADC_InitStruct.ADC_DataAlign =ADC_DataAlign_Right; 
                 ADC_Init(ADC1,&ADC_InitStruct); 
          
                ADC_ExternalTrigConvCmd(ADC1,ENABLE); 
                 //ENABLE ADC1 
                 ADC_RegularChannelConfig(ADC1,0,1,ADC_SampleTime_1Cycles5); 
          
                ADC_DMACmd(ADC1,ENABLE); 
                 ADC_Cmd(ADC1,ENABLE); 
                  
                ADC_ResetCalibration(ADC1); 
                 while(ADC_GetResetCalibrationStatus(ADC1)); 
                 ADC_StartCalibration(ADC1); 
                 while(ADC_GetCalibrationStatus(ADC1)); 
          

  
void TIM3_Init() 
 { 
                 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; 
                 NVIC_InitTypeDef NVIC_InitStruct; 
          
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); 
                  
                TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; 
                 TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; 
                 TIM_TimeBaseInitStruct.TIM_Period = 72000000/SampleRate; 
                 TIM_TimeBaseInitStruct.TIM_Prescaler = 0; 
                 TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct); 
                  
                 TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update); //选择TRGO触发源为计时器更新时间 
          
                TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); 
                 NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn; 
                 NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; 
                 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3; 
                 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; 
                 NVIC_Init(&NVIC_InitStruct); 
                 TIM_Cmd(TIM3,ENABLE); 
          
}

你可能感兴趣的:(stm32,adc,TRGO)