标题: STM32学习之ADC的使用 [打印本页]

作者: xiaos    时间: 2015-4-10 17:33
标题: STM32学习之ADC的使用
配置ADC先配置好ADC的输入引脚PC1,这里我使用ADC1的第11通道.


  1. void ADC_Configuration()

  2. {

  3.        GPIO_InitTypeDef      GPIO_InitStructure;

  4.       

  5.        RCC_APB2PeriphClokCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1,ENABLE);//使能PC和ADC1的时钟

  6.        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//选择模拟输入模式

  7.        GPIO_InitStructure.GPIO_Pin=GPIO_Pin1;



  8.        GPIO_Init(GPIOC,&GPIO_InitStructure);

  9. }

  10. 配置ADC

  11. void ADC_Configuration()

  12. {

  13.        ADC_InitTypeDef        ADC_InitStructure;

  14.       

  15.        ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;使用连续转换模式

  16.        ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC数据右对齐

  17.        ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//使用软件触发ADC转换

  18.        ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC工作在独立模式

  19.        ADC_InitStructure.ADC_NbrOfChannel=1;//选择只有一个通道开始转换

  20.        ADC_InitStructure.ADC_ScanConvMode=DISABLE;//使用单通道模式

  21.       

  22.        ADC_Init(ADC1,&ADC_InitStructure);

  23.        RCC_ADCCLKConfig(RCC_PCLK2_Div8);//选择ADC的时钟为APB2桥时钟的八分之一

  24.       

  25.        ADC_RegularChannelConfig(ADC1,ADC_Channel_11, 1, ADC_SampleTime_55Cycles5);//设置ADC1说我第11通道的转换顺序为第一个 采样时间为55.5个周期

  26.        ADC_Cmd(ADC1,ENABLE);

  27.       

  28.        ADC_ResetCalibration(ADC1);//重置ADC1的校准寄存器

  29.        while(ADC_GetResetCalibrationStatus(ADC1))//等待校准完成

  30.        {

  31.             

  32.        }

  33.       

  34.               ADC_StartCalibration(ADC1);//指定ADC1的校准状态

  35.       

  36.        while(ADC_GetCalibrationStatus(ADC1));//等待指定完成

  37.       

  38.        ADC_SoftwareStartConvCmd(ADC1,ENABLE);//软件触发ADC1开始转换

  39. }  
复制代码


最后调用 ADC_GetInjectedConversionValue(ADC1, ADC_Channel_11);就可以得到模数转换的数字量的值.




作者: zps0312    时间: 2015-4-11 11:41
看不懂哈,初学者




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1