STM32单通道程序
ADC单通道初始话程序如下
- #include "stm32f10x.h" // Device header
-
- void AD_Init(void)
- {
- //开时钟
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
-
- RCC_ADCCLKConfig(RCC_PCLK2_Div6);//6分频=72/6=12Mhz
-
- //GPIO
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-
- ADC_RegularChannelConfig(ADC1,ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);//输入通道:选ADC1,通道0,通道放入扫描列表的位置1,采样时间55.5个周期
- //ADC
- ADC_InitTypeDef ADC_InitStruct;
- ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;
- ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;
- ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
- ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;
- ADC_InitStruct.ADC_NbrOfChannel=1;
- ADC_InitStruct.ADC_ScanConvMode=DISABLE;
-
- ADC_Init(ADC1,&ADC_InitStruct);
-
- ADC_Cmd(ADC1,ENABLE);
- //ADC校准
- ADC_ResetCalibration(ADC1);//复位校准
- while(ADC_GetResetCalibrationStatus(ADC1)==SET);//等待复位校准完成
- ADC_StartCalibration(ADC1);//开始校准
- while(ADC_GetCalibrationStatus(ADC1)==SET);//等待校准完成
- }
-
- uint16_t AD_GetValue(void)
- {
- ADC_SoftwareStartConvCmd(ADC1,ENABLE);
- while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==0);//转换完成
- return ADC_GetConversionValue(ADC1);
-
- }
主函数中用一个数来收取这个数据即可。
|