STM32F407霸天虎HAL库学习笔记——使用ADC采集MQ135的数据并通过OLED显示

  • 一、软件准备
  • 二、硬件准备
  • 三、CubeMX配置
  • 四、Keil
    • MQ135.c
    • MQ135.h
    • main函数
  • 五、实验效果

MQ135介绍:MQ135是测量空气污染情况常用的一个传感器,具有代表性,价格低,寿命长,敏感度也OK,主要用于测量空气中二氧化碳,氮氧化物,氨气,酒精,苯类等。这几样气体可以说都属于家用空气污染测定中的重要成份,因此用这个传感器刚刚好。

如上图,MQ135的引脚从上到下依次是:VCC、GND、DO、AO
DO:输出数字信号,当监测到空气污染达到阀值时,DO口输出高电平,相当于一个开关,适用于做一个气体上限报警器,本次实验不用到DO口
AO:输出模拟信号,这个传感器使用的电压是5V,所以在接VCC的时候需要接到开发板的5V输出口上。

一、软件准备

软件准备

二、硬件准备

STM32F407霸天虎
DAP高速下载器
USB转串口线

三、CubeMX配置

STM32F407霸天虎用的是STM32F407ZGT6

选择外部高速时钟

因为本次实验需要用到OLED,所以I2C的配置如下:(具体通过I2C驱动OLED屏幕可以看我上篇文章)

ADC配置如下:

这里插入一些ADC的知识

1、STM32F407ZGT6 有 3 个 ADC,每个 ADC 有 12 位、10 位、8 位和 6 位可选,每个 ADC 有 16 个外部通道。另外还有两个内部 ADC 源和 VBAT 通道挂在 ADC1 上。ADC 具有独立模式、双重模
式和三重模式,对于不同 AD 转换要求几乎都有合适的模式可选。
2、这是3个ADC的IO分配图,在CubeMX中也能看到
3、模拟电压经过 ADC 转换后,是一个 12 位的数字值,如果通过串口以 16 进制打印出来的话,可
读性比较差,那么有时候我们就需要把数字电压转换成模拟电压,也可以跟实际的模拟电压(用
万用表测)对比,看看转换是否准确。转换公式为:模拟电压 = 数字电压*3.3/4096

时钟树选择168MHz,具体配置方法见上篇的时钟树配置
而后根据自己的喜好编辑工程的名称,存放位置,IDE选择ARM-MDKV5

四、Keil

由于我们的Debug用的是DAP,如图下选择Debug和下载配置

MQ135.c

本来MQ135的采集可以单独写在main函数里即可完成采集,但是为了代码可移植性高,我将其作为函数单独封装在了.c文件里。

#include "MQ135.h"
#include "adc.h"
#include "oled.h"/*** @brief    MQ135的初始化,启动ADC1* @param    none* @retval   none
*/
void MQ135_Init(void)
{HAL_ADC_Start(&hadc1);HAL_ADC_PollForConversion(&hadc1, 50);}/*** @brief    读取MQ135的ADc值* @param    none * @retval   none
*/
void MQ135_ReadData(void)
{float vol;             //实际所得的电压值int val;                  //输入转换的数字量if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC)){val = HAL_ADC_GetValue(&hadc1);}vol = (float)val*3.3 / 4096;OLED_ShowString(0,2,"ADC:",16);OLED_ShowNum(30,2,val,4,16);OLED_ShowString(0,4,"VOL:",16);OLED_Showfloat(30,4,vol,1,3,16);HAL_Delay(100);
}

MQ135.h

#ifdef   __MQ135_H__
#define __MQ135_H__#include "stm32f4xx_hal.h"void MQ135_Init(void);
void MQ135_ReadData(void);#endif

main函数

 /* USER CODE BEGIN 2 */OLED_Init();OLED_Clear();MQ135_Init();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */OLED_ShowCHinese(0,0,0);  //物OLED_ShowCHinese(16,0,1);    //联OLED_ShowCHinese(32,0,2);    //网OLED_ShowCHinese(48,0,3);    //小OLED_ShowCHinese(64,0,4);    //白MQ135_ReadData();}/* USER CODE END 3 */

五、实验效果

STM32F407霸天虎HAL库学习笔记——使用ADC采集MQ135的数据并通过OLED显示相关推荐

  1. STM32F407霸天虎HAL库学习笔记——串口发送

    STM32F407霸天虎HAL库学习笔记--串口收发 一.软件准备 二.硬件准备 三.CubeMX配置 四.Keil printf重写 main函数 五.实验效果 一.软件准备 软件准备 二.硬件准备 ...

  2. STM32F407霸天虎HAL库CubeMX学习笔记——DS18B20

    STM32F407霸天虎HAL库CubeMX学习笔记--DS18B20 一.软件准备 二.硬件准备 三.CubeMX配置 四.Keil printf重写 tim.c DS18B20.h DS18B20 ...

  3. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  4. STM32 HAL库学习笔记4-SPI

    STM32 HAL库学习笔记4-SPI 前言 一.SPI协议简介 SPI物理层 SPI协议层 1.基本通讯过程 2. 通讯的起始和停止信号 3. 数据有效性 4. CPOL/CPHA 及通讯模式 二. ...

  5. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

  6. STM32cubemx——HAL库学习笔记 六、IWDG独立看门狗的配置

    一.配置STM32cubeMX工程 在配置好时钟和调试设备以后进行一下操作即可以使用 看门狗的溢出时间公式为 Tout= 分频系数/ 时钟 * 重装载值 二.IWDG的技术讲解 可以到看,看门狗相对于 ...

  7. HAL库学习笔记ADC篇----ADC多通道连续转换+DMA方式

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.Cube配置(F407VET6) 二.使用步骤 1. 代码总览 2.代码注意事项以及解析 总结 前言 第一次写,无 ...

  8. 爱上hal库学习笔记——cubemx图形界面,洋桃电子YYDS

    新建工程 选择封装芯片型号 3.图形界面  (一)系统内核 DMA 直接存储器访问:可不通过CPU程序处理直接从某个功能自动读出数据 GPIO 通用输入输出端口:可把电平输入输出,读取按键和控制LED ...

  9. STM32CubeMX与HAL库学习--简单的CAN回环测试

    STM32CubeMX与HAL库学习--简单的CAN回环测试 前言 STM32CubeMX生成初始化代码 在MDK-ARM里编辑代码 其他 后续 前言 本人小白,最近看了CAN协议与STM32的bxC ...

最新文章

  1. 临江市领导参观视察域乎 —— 积极探索、稳妥布局“区块链+农业”
  2. js获取当前时间显示在页面上
  3. 作为一名Java程序员,这些Spring知识点面试官常考
  4. xftp Initialize Flexnet Service failed / Error code: 50003
  5. 29-分数求模(逆元)
  6. AtcoderGrandContest 005 F. Many Easy Problems
  7. 中秋应景诗词歌赋赏析
  8. 36--斐波那契数列
  9. Ubuntu中anaconda的安装及使用
  10. python维度不一样_numpy数组维度不匹配
  11. leetcode[206]翻转链表/reverse linked list 链表经典面试题目
  12. springboot 和springMVC interceptor使用
  13. 368.最大整数子集
  14. 14讲项目实战内页抽出切换效果的实现
  15. 古诗词网站源码 php,帝国cms 诗词整站源码
  16. 职业发展,选择大都市还是回老家?
  17. 我刚刚通过 @盛大网盘EverBox 分享了 Web协议与实践HTTP.、网络协议、缓存技术和....pdf, 欢迎大家下载!...
  18. 面包屑的实现+tag功能实现+form表单
  19. 详细安装指南-Ubuntu16.04,CUDA8.0,Caffe,OpenCV3.1,Theano,Tensorflow,纯属转载,等待自己修改
  20. java valueOf()方法

热门文章

  1. 【转载】空间直线同任意形状椭球交点
  2. android 自定义倒计时控件(圆形倒计时显示)
  3. linux expect函数,Linux expect 用法(示例代码)
  4. net oracle连接池配置,Oracle ODP.NET连接池
  5. VSCode+Markdown Preview Enhanced插件导出HTML侧边栏目录
  6. 一加氢OS发布会 观看小结
  7. Swift Programming Tutorial for Beginners-14day Tutorial
  8. 中华医学期刊文献去哪里查阅下载
  9. IIS的负载均衡的解决方案
  10. 【Vijos】P1158 小三学算术