×
单片机 > 单片机程序设计 > 详情

stm32f103之GP2Y1014AU

发布时间:2020-05-28 发布时间:
|

灰尘传感器 GP2Y1010AU的接线方式:


ADC初始化:


void  Adc_Init(void)

{   

    ADC_InitTypeDef ADC_InitStructure; 

    GPIO_InitTypeDef GPIO_InitStructure;


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1,ENABLE);      



    RCC_ADCCLKConfig(RCC_PCLK2_Div6);  



    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;       

    GPIO_Init(GPIOA, &GPIO_InitStructure);  


    ADC_DeInit(ADC1);  


    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;  

    ADC_InitStructure.ADC_ScanConvMode = DISABLE;   

    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; 

    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; 

    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  

    ADC_InitStructure.ADC_NbrOfChannel = 1;

    ADC_Init(ADC1, &ADC_InitStructure); 



    ADC_Cmd(ADC1, ENABLE);  


    ADC_ResetCalibration(ADC1); 


    while(ADC_GetResetCalibrationStatus(ADC1)); 


    ADC_StartCalibration(ADC1);  


    while(ADC_GetCalibrationStatus(ADC1));  




}                 


u16 Get_Adc(u8 ch)   

{


    ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );          


    ADC_SoftwareStartConvCmd(ADC1, ENABLE);     


    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));

    return ADC_GetConversionValue(ADC1);    

}


u16 Get_Adc_Average(u8 ch,u8 times)

{

    u32 temp_val=0;

    u8 t;

    for(t=0;t

    {

        temp_val+=Get_Adc(ch);

        delay_ms(5);

    }

    return temp_val/times;

}    


GP2Y1014AU的使用:


void GP2Y1014AU()   //PIN3  B12 

{

    GPIO_ResetBits(GPIOB,GPIO_Pin_12);                 

    delay_us(280);      

    AD_PM=Get_Adc(1); 

    delay_us(40);     

    GPIO_SetBits(GPIOB,GPIO_Pin_12);    

    delay_us(9680); 

}


void GP2Y1014AU_init(void){


    GPIO_InitTypeDef GPIO_InitStruce;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

    GPIO_InitStruce.GPIO_Mode=GPIO_Mode_Out_PP;

    GPIO_InitStruce.GPIO_Pin=GPIO_Pin_12;

    GPIO_InitStruce.GPIO_Speed= GPIO_Speed_50MHz;

    GPIO_Init(GPIOB,&GPIO_InitStruce);

}


关键字:stm32f103  GP2Y1014AU 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何升级STM32单片机的代码