在STM32F103ZET6的处理器上,设置ADC1的采样频率为1KHz,采样精度为12位,对电压进行数据采集

2025-05-07 09:33:08
推荐回答(1个)
回答1:

  芯片:STM32F103
  库函数版本:3.5
  平台:KEIL 4.72

  ADC1初始化部分

  ADC_InitTypeDef ADC_USER;
  RCC_ADCCLKConfig(RCC_PCLK2_Div6);
  ADC_USER.ADC_Mode = ADC_Mode_Independent;
  ADC_USER.ADC_ScanConvMode = DISABLE;
  ADC_USER.ADC_ContinuousConvMode = DISABLE;
  ADC_USER.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
  ADC_USER.ADC_DataAlign = ADC_DataAlign_Right;
  ADC_USER.ADC_NbrOfChannel = 1;
  ADC_Init(ADC1, &ADC_USER);

  ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5);
  ADC_Cmd(ADC1, ENABLE);

  ADC_ResetCalibration(ADC1);
  while(ADC_GetResetCalibrationStatus(ADC1));
  ADC_StartCalibration(ADC1);
  while(ADC_GetCalibrationStatus(ADC1));
  ADC_SoftwareStartConvCmd(ADC1, ENABLE);

  //主程序调用ADC部分
  ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  delay_us(200);
  while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
  num = ADC_GetConversionValue(ADC1); //返回值就是采集的数据