资源简介
GP2Y1010AU0F PM2.5 传感器 于STM32单片机的工程文件。
代码片段和文件信息
#include “adc.h“
#include “delay.h“
//初始化ADC
//这里我们仅以规则通道为例
//我们默认将开启通道0~3
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 ENABLE ); //使能ADC1通道时钟
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC分频因子6 72M/6=12ADC最大时间不能超过14M
//PA1 作为模拟通道输入引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入引脚
GPIO_Init(GPIOA &GPIO_InitStructure);
//PB1 作为脉冲输出引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB &GPIO_InitStructure);
GP2Y_High;
ADC_DeInit(ADC1); //复位ADC1将外设 ADC1 的全部寄存器重设为缺省值
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC工作模式:ADC1和ADC2工作在独立模式
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数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 1; //顺序进行规则转换的ADC通道的数目
ADC_Init(ADC1 &ADC_InitStructure); //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器
ADC_Cmd(ADC1 ENABLE); //使能指定的ADC1
ADC_ResetCalibration(ADC1); //使能复位校准
while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束
ADC_StartCalibration(ADC1); //开启AD校准
while(ADC_GetCalibrationStatus(ADC1)); //等待校准结束
// ADC_SoftwareStartConvCmd(ADC1 ENABLE); //使能指定的ADC1的软件转换启动功能
}
//获得ADC值
//ch:通道值 0~3
u16 Get_Adc(u8 ch)
{
//设置指定ADC的规则组通道,一个序列,采样时间
ADC_RegularChannelConfig(ADC1 ch 0 ADC_SampleTime_239Cycles5 ); //ADC1ADC通道采样时间为239.5周期
ADC_SoftwareStartConvCmd(ADC1 ENABLE); //使能指定的ADC1的软件转换启动功能
while(!ADC_GetFlagStatus(ADC1 ADC_FLAG_EOC ));//等待转换结束
return ADC_GetConversionValue(ADC1); //返回最近一次ADC1规则组的转换结果
}
float GetGP2Y(void)
{
u32 AD_PM;
double pm;
GP2Y_Low;
delay_us(280);
AD_PM = Get_Adc(ADC_Channel_0); //PA0
delay_us(40);
GP2Y_High;
delay_us(9680);
pm = 0.17*AD_PM-0.1; //转换公式
printf(“%f\n“pm);
return pm;
}
u16 Get_GP2Y_Average(u8 times)
{
u32 pm_val=0;
u8 t;
for(t=0;t {
pm_val+=GetGP2Y();
delay_ms(5);
}
return pm_val/times;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2870 2016-05-28 13:25 HARDWARE\ADC\adc.c
文件 273 2016-05-28 12:59 HARDWARE\ADC\adc.h
文件 35016 2016-03-07 04:44 HARDWARE\LCD\FONT.H
文件 83047 2016-05-28 13:00 HARDWARE\LCD\lcd.c
文件 8557 2016-05-28 13:00 HARDWARE\LCD\lcd.h
文件 828 2016-05-28 12:59 HARDWARE\LED\led.c
文件 172 2016-05-28 13:00 HARDWARE\LED\led.h
目录 0 2019-04-29 23:02 HARDWARE\ADC
目录 0 2019-04-29 23:02 HARDWARE\LCD
目录 0 2019-04-29 23:02 HARDWARE\LED
目录 0 2019-04-29 23:02 HARDWARE
----------- --------- ---------- ----- ----
130763 11
- 上一篇:spss破解版
- 下一篇:基于Hadoop的Kmeans算法实现
相关资源
- STM32使用2轴自由度舵机云台实现太阳
- STM32源码.zip
- STM32F407 探索者HAL库例程V1.1
- STM32Cube_fw_F4_V1.24.1 CubeMX的F4系列的封装
- STM32——心率血氧、步数、时间、温度
- uCOS-III 应用开发指南—基于 STM32F103系
- STM32CubeMX+TouchGFX+QSPI 工程.zip
- stm32f4配置资源包
- STM32Cube_FW_F1_V1.7.0
- STM32Cube_FW_F1_V1.6.0
- stm32 cubemx6.0配置原子7寸rgb1024x600 tou
- stm32温度湿度蓝牙_APP.zip
- Keil.STM32F4xx_DFP.2.14.0.pack
- keil_STM32F1系列芯片支持包.rar
- STM32的USB声卡实验,亲测可用
- STM32开发板程序
- BC26-STM32系列源代码
- STM32F1、F4电机PWM调速及PID速度闭环控
- stm32f407+cubemax+iic主从通信
- Keil STM32F0系列 支持库
- Lierda LoRa介绍及规划
- STM32多路ADC采集Demo(DMA和非DAM)
- stm32f107中文资料,中文用户手册
- STM32CubeMX v4.27.0版本软件2018年10月最新
- Keil.STM32F0xx_DFP.2.0.0 keil5 STM32F0xx支持文
- STM32F407实现鸣志步进电机S型加速实现
- STM32f1系列芯片包及固件库.zip
- STM32史上最全库
- stm32cubemx
- STM32F4xx_DSP_StdPeriph_Lib_V1.4.0
评论
共有 条评论