123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #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
|