|
本帖最后由 bigfanofloT 于 2017-5-16 19:42 编辑
一、MQ-135空气质量传感器介绍
参考此帖http://club.gizwits.com/thread-6484-1-1.html
二、硬件连线
根据Nucleo-F767ZI原理图,我们选择arduino UNO接口的A1,即STM32F767ZIT6的PC0,ADC1通道10
三、完整源码
头文件如下:
- /**
- ***********************************
- * @file ADC/ADC_RegularConversion_Polling/Inc/main.h
- * @author MCD Application Team
- * @version V1.0.2
- * @date 30-December-2016
- * @brief Header for main.c module
- ***********************************
- * @attention
- *
- * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ***********************************
- */
- /* Define to prevent recursive inclusion -------------------------------------*/
- #ifndef __MAIN_H
- #define __MAIN_H
- /* Includes ------------------------------------------------------------------*/
- #include "stm32f7xx_hal.h"
- #include "STM32F7xx_hal_adc.h"
- /* Exported types ------------------------------------------------------------*/
- /* Exported constants --------------------------------------------------------*/
- /* User can use this section to tailor ADCx instance used and associated
- resources */
-
- /* Definition for ADCx clock resources */
- #define ADCx ADC1
- #define ADCx_CLK_ENABLE() __HAL_RCC_ADC1_CLK_ENABLE()
- #define ADCx_CHANNEL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
- #define ADCx_FORCE_RESET() __HAL_RCC_ADC_FORCE_RESET()
- #define ADCx_RELEASE_RESET() __HAL_RCC_ADC_RELEASE_RESET()
- /* Definition for ADCx Channel Pin */
- #define ADCx_CHANNEL_PIN GPIO_PIN_0//对应板卡A1
- #define ADCx_CHANNEL_GPIO_PORT GPIOC
- /* Definition for ADCx's Channel */
- #define ADCx_CHANNEL ADC_CHANNEL_10
- #define SAMPLINGTIME ADC_SAMPLETIME_3CYCLES
- /* Exported macro ------------------------------------------------------------*/
- /* Exported functions ------------------------------------------------------- */
- void MQ135_Init(void);
- int MQ135_GetValue(void);
- #endif /* __MAIN_H */
- /*********** (C) COPYRIGHT STMicroelectronics ***END OF FILE**/
复制代码 源文件如下:
- /**
- ***********************************
- * @file ADC/ADC_RegularConversion_Polling/Src/main.c
- * @author MCD Application Team
- * @version V1.0.2
- * @date 30-December-2016
- * @brief This example describes how to use Polling mode to convert data.
- ***********************************
- * @attention
- *
- * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ***********************************
- */
- /* Includes ------------------------------------------------------------------*/
- #include "hal_mq135.h"
- /** @addtogroup STM32F7xx_HAL_Examples
- * @{
- */
- /** @addtogroup ADC_RegularConversion_Polling
- * @{
- */
- /* Private typedef -----------------------------------------------------------*/
- /* Private define ------------------------------------------------------------*/
- /* Private macro -------------------------------------------------------------*/
- /* Private variables ---------------------------------------------------------*/
- /* ADC handler declaration */
- ADC_HandleTypeDef AdcHandle;
- void MQ135_Init(void)
- {
- ADC_ChannelConfTypeDef sConfig;
-
- GPIO_InitTypeDef GPIO_InitStruct;
- /*##-1- Enable peripherals and GPIO Clocks #################################*/
- /* ADC Periph clock enable */
- ADCx_CLK_ENABLE();
- /* Enable GPIO clock ******************/
- ADCx_CHANNEL_GPIO_CLK_ENABLE();
- /*##-2- Configure peripheral GPIO ##########################################*/
- /* ADC Channel GPIO pin configuration */
- GPIO_InitStruct.Pin = ADCx_CHANNEL_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(ADCx_CHANNEL_GPIO_PORT, &GPIO_InitStruct);
-
- /*##-1- Configure the ADC peripheral #######################################*/
- AdcHandle.Instance = ADCx;
-
- ADCx_CLK_ENABLE() ;
- ADCx_CHANNEL_GPIO_CLK_ENABLE();
- AdcHandle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV4;
- AdcHandle.Init.Resolution = ADC_RESOLUTION_12B;
- AdcHandle.Init.ScanConvMode = DISABLE; /* Sequencer disabled (ADC conversion on only 1 channel: channel set on rank 1) */
- AdcHandle.Init.ContinuousConvMode = DISABLE; /* Continuous mode disabled to have only 1 conversion at each conversion trig */
- AdcHandle.Init.DiscontinuousConvMode = DISABLE; /* Parameter discarded because sequencer is disabled */
- AdcHandle.Init.NbrOfDiscConversion = 0;
- AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; /* Conversion start trigged at each external event */
- AdcHandle.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T1_CC1;
- AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT;
- AdcHandle.Init.NbrOfConversion = 1;
- AdcHandle.Init.DMAContinuousRequests = DISABLE;
- AdcHandle.Init.EOCSelection = DISABLE;
- if (HAL_ADC_Init(&AdcHandle) != HAL_OK)
- {
- /* ADC initialization Error */
- }
- /*##-2- Configure ADC regular channel ######################################*/
- sConfig.Channel = ADCx_CHANNEL; /* Sampled channel number */
- sConfig.Rank = 1; /* Rank of sampled channel number ADCx_CHANNEL */
- sConfig.SamplingTime = ADC_SAMPLETIME_56CYCLES; /* Sampling time (number of clock cycles unit) */
- sConfig.Offset = 0; /* Parameter discarded because offset correction is disabled */
- if (HAL_ADC_ConfigChannel(&AdcHandle, &sConfig) != HAL_OK)
- {
- /* Channel Configuration Error */
- }
-
- if (HAL_ADC_Start(&AdcHandle) != HAL_OK)
- {
- /* Start Conversation Error */
- }
-
- }
- //just return adc raw value.
- int MQ135_GetValue(void)
- {
- if (HAL_ADC_Start(&AdcHandle) != HAL_OK)
- {
- }
- return HAL_ADC_GetValue(&AdcHandle);
- }
-
- /**
- * @}
- */
- /**
- * @}
- */
- /*********** (C) COPYRIGHT STMicroelectronics ***END OF FILE**/
复制代码
本系列帖子目录:
http://club.gizwits.com/thread-6544-1-1.html
|
|