#include "adc_sensor.h" #if (GP2Y1014AU_EN==1) #define PMLED_CTR_PIN P1_1 //p11 pm传感器的控制引脚 #define PMLED_CTR_PORT P1DIR #define PMLED_CTR_NUM GPIO_1 //引脚配置为输出; #define PMLED_CTR_OUT() { PMLED_CTR_PORT |= PMLED_CTR_NUM; asm("NOP"); } #define PMADC_PIN_NUM GPIO_6 //传感器adc输入端口 adc端口只有p0口才有 这里就是0-7参数 #define PMADC_CHANNEL HAL_ADC_CHANNEL_6 #define PMADC_INPUT_IN() { APCFG|=PMADC_PIN_NUM;asm("NOP");} void GP2Y1014AU_Init(void) //pm2.5 传感器 { PMLED_CTR_OUT(); PMADC_INPUT_IN(); HalAdcInit(); HalAdcSetReference(HAL_ADC_REF_AVDD); } uint16 get_gp2y1014au_value(void) { long Pm_Val=0; int Value=0; PMLED_CTR_PIN=0; system_delay_us(280); Pm_Val = HalAdcRead(PMADC_CHANNEL,HAL_ADC_RESOLUTION_14);//adc转换 Pm_Val = (Pm_Val*3300)/8192;//转换成电压 system_delay_us(40);//延时一会关闭传感器led PMLED_CTR_PIN=1; system_delay_us(9680); Pm_Val/=10;//转换成ug/m3 Value=Pm_Val; Value-=30;//去掉0点漂移 if(Value<0) { Value=0; } return Value; } #endif