ADC--数模转换器的使用

目录

前言

ADC接口使用

配置准备

确定引脚编号

光敏电阻--PF7​编辑

ADC3_IN5

开始配置

 实验进阶

MQ_3--酒精传感器、水位传感器、火焰传感器


前言

ADC(analog-digital conversion)顾名思义模拟数字转换器,把外界的譬如温度、湿度、酒精含量、水位、特殊光波等等的现实信号转变为电信号,以方便计算机获取和使用这些数据。原理如下:

模拟信号,当进入GPIO引脚,到达复用模块,再进一步达到ADC。ADC 把模拟信号的电压数值测量出来,以数字信号的模式传送给core.(红色线路为模 拟信号,绿色线路为数字信号线路

ADC接口使用

配置准备

模拟信号产生:光敏电阻。 采集方式:ADC接口

1.光敏电阻引脚配置

2.ADC配置

3.开始工作

4.通道配置

确定引脚编号

光敏电阻--PF7

先看GPIO设备的引脚是哪个,再配置它的模拟

ADC3_IN5

PF7引脚使用的是ADC3,通道IN5传入信号给core

开始配置

Light.c

//Light.c#include "stm32f4xx.h"                  // Device header
#include "stdio.h"//PF7  
void ADC_Light_Init()
{RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AN;//模拟GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_7;GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;//不确定电压,GPIO_InitStruct.GPIO_Speed=GPIO_High_Speed;GPIO_Init(GPIOF,&GPIO_InitStruct);//ADC和模拟模块绑定,引脚只走它一个,所以配复用就不需要啦!//ADC参数配置ADC_InitTypeDef ADC_InitStruct;ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;//ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC3;ADC_InitStruct.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;ADC_InitStruct.ADC_NbrOfConversion=1;//转化列表ADC_InitStruct.ADC_Resolution=ADC_Resolution_12b;ADC_InitStruct.ADC_ScanConvMode=DISABLE;ADC_Init(ADC3,&ADC_InitStruct);//开始工作ADC_Cmd(ADC3,ENABLE);//通道配置ADC_RegularChannelConfig(ADC3, ADC_Channel_5,1,ADC_SampleTime_3Cycles);}void Light_GetData()
{//软件开启测量和转换工作ADC_SoftwareStartConv(ADC3);//等待转换数据完成while(ADC_GetSoftwareStartConvStatus(ADC3)){}uint32_t val=ADC_GetConversionValue(ADC3);printf("val = %d\n",val);
}

 实验进阶

MQ_3--酒精传感器、水位传感器、火焰传感器

引脚接口一致,代码通用

#include "stm32f4xx.h"                  // Device header
#include "stdio.h"//PF7  
void ADC_Alco_Init()
{RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AN;GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;//不确定电压,GPIO_InitStruct.GPIO_Speed=GPIO_High_Speed;GPIO_Init(GPIOF,&GPIO_InitStruct);//ADC和模拟模块绑定,引脚只走它一个,所以配复用就不需要啦!//ADC参数配置ADC_InitTypeDef ADC_InitStruct;ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;//ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC3;ADC_InitStruct.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;ADC_InitStruct.ADC_NbrOfConversion=1;//转化列表ADC_InitStruct.ADC_Resolution=ADC_Resolution_12b;ADC_InitStruct.ADC_ScanConvMode=DISABLE;ADC_Init(ADC3,&ADC_InitStruct);//开始工作ADC_Cmd(ADC3,ENABLE);//通道配置ADC_RegularChannelConfig(ADC3, ADC_Channel_9,1,ADC_SampleTime_3Cycles);}void Alco_GetData()
{//软件开启测量和转换工作ADC_SoftwareStartConv(ADC3);//等待转换数据完成while(ADC_GetSoftwareStartConvStatus(ADC3)){}uint32_t Alc=ADC_GetConversionValue(ADC3);printf("Alcohol = %d\n",Alc);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

突破编程_C++_网络编程(OSI 七层模型(网络层))

1 网络层的功能与作用 1.1 功能与作用详解 OSI 网络层是 OSI 参考模型中的第三层,位于数据链路层和应用层之间,其主要功能与作用涉及到网络中的数据通信和端到端的连接服务。其详细的功能与作用如下: 路由选择与分组交换:网络层…

通过PandasAI使用自然语言进行数据分析

通过PandasAI使用自然语言进行数据分析 介绍 ​ PandasAI是一个Python库,可以很容易地用自然语言向数据提问。它可以帮助您使用生成人工智能来探索、清理和分析数据。 使用PandasAI 这里使用Anaconda和Jupyter使用PandasAI 进入一个文件目录 创建一个 Notebook …

道可云元宇宙每日资讯|元宇宙标准化工作组成立大会召开

道可云元宇宙每日简报(2024年3月28日)讯,今日元宇宙新鲜事有: 元宇宙标准化工作组成立大会召开 3月21日,元宇宙标准化工作组成立大会暨第一次全体委员会议在浙江省丽水市青田县召开。元宇宙标准化工作组的建立&#…

阿里云服务器初始化简记

文章目录 推荐版本CPU、内存、硬盘视活动而定,一般活动价99元一年注意带宽云服务器具体设置建议系统推荐CentOS 7.9本地系统推荐MacOSiTerm2本地系统推荐Win11Linux子系统推荐开发环境NginxPythonMySQL 机器和系统基本状况测试网速设置Vim显示中文其他系统状态监控和…

Python | Leetcode Python题解之第2题两数相加

题目: 题解: # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optiona…

仓库规划csp

满分代码&#xff08;直接暴力&#xff09; #include<iostream> using namespace std; const int M11; const int N1001; int n,m; int a[N][M]; bool isfather(int x,int y)//y是否是x的上级仓库 {for(int i1;i<m;i){if(a[x][i]>a[y][i])return false;}return …

LabVIEW无人机大气数据智能测试系统

LabVIEW无人机大气数据智能测试系统 随着无人机技术的迅速发展&#xff0c;大气数据计算机作为重要的机载设备&#xff0c;在确保飞行安全性方面发挥着重要作用。设计了一套基于LabVIEW的无人机大气数据智能测试系统&#xff0c;通过高效、稳定的性能测试&#xff0c;及时发现…

统计XML文件内标签的种类和其数量及将xml格式转换为yolov5所需的txt格式

1、统计XML文件内标签的种类和其数量 对于自己标注的数据集&#xff0c;需在标注完成后需要对标注好的XML文件校验&#xff0c;下面是代码&#xff0c;只需将SrcDir换成需要统计的xml的文件夹即可。 import os from tqdm import tqdm import xml.dom.minidomdef ReadXml(File…

图像缩放算法双立方插值法

双立方插值法&#xff08;Bicubic Interpolation&#xff09;是一种常用的图像缩放算法&#xff0c;它通过对原始图像中的像素进行加权平均来计算目标图像中的像素值。相比双线性插值&#xff0c;双立方插值能更好地保留图像的细节和平滑过渡效果。 具体实现步骤如下&#xff…

Vue路由导航守卫

一、什么是Vue路由导航守卫&#xff1f; Vue路由导航守卫是Vue Router提供的一种机制&#xff0c;它可以让你在路由跳转之前或之后执行一些自定义逻辑&#xff0c;例如&#xff1a;鉴权、重定向等。守卫分为全局守卫、路由独享守卫和组件内守卫。 二、全局守卫 全局守卫作用…

Jenkins执行策略(图文讲解)

Jenkins执行策略-图文讲解 一&#xff1a;手动执行1、手动执行流程2、手动执行操作 二、通过构建触发器——定时执行1、定时执行流程2、定时执行操作 三、当开发部署成功之后进行执行——在测试项配置——关注的项目1、执行流程2、操作流程 四、测试代码有更新的时候自动构建1、…

nginx编译安装详细说明

前言 在 CentOS 7 上编译安装 Nginx 1.24.0 &#xff0c;您可以按照以下步骤进行操作。 一、编译前准备 1.1、下载Nginx源代码 下载 Nginx 1.24.0 的源代码压缩包&#xff0c;并解压缩&#xff1a; 访问Nginx官网&#xff08;http://nginx.org/&#xff09;&#xff0c;找…

Kubeflow文档1:介绍与架构

Kubeflow 2024/3/19版本的文档 此专栏用来展示相关的内容翻译&#xff0c;重点关注本地部署&#xff0c;关于运营商的方案&#xff0c;请自行查阅 文档地址https://www.kubeflow.org/docs/ 开始编辑时间&#xff1a;2024/3/27&#xff1b;最后编辑时间2024/3/27 Kubeflow文…

毕设论文目录设置

添加目录 选择一种格式的自动目录 更新目录 发现该目录中只有1、2章&#xff0c;3、4章 然后再点击更新目录 对应的&#xff0c;小标题添加二级目录

数据库之MyBatisPlus详解

MyBatisPlus MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window) 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 官网地址&#xff1a;https://baomidou.com/ 一、入门案…

C++学习随笔(8)——模板初阶

本章我们来学习一下C的模版部分&#xff01; 目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.1 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 1. 泛型编程 如何实现一个通…

精通Go语言文件上传:深入探讨r.FormFile函数的应用与优化

1. 介绍 1.1 概述 在 Web 开发中&#xff0c;文件上传是一项常见的功能需求&#xff0c;用于允许用户向服务器提交文件&#xff0c;如图像、文档、视频等。Go 语言作为一门强大的服务器端编程语言&#xff0c;提供了方便且高效的方式来处理文件上传操作。其中&#xff0c;r.F…

(完结)Java项目实战笔记--基于SpringBoot3.0开发仿12306高并发售票系统--(三)项目优化

本文参考自 Springboot3微服务实战12306高性能售票系统 - 慕课网 (imooc.com) 本文是仿12306项目实战第&#xff08;三&#xff09;章——项目优化&#xff0c;本篇将讲解该项目最后的优化部分以及一些压测知识点 本章目录 一、压力测试-高并发优化前后的性能对比1.压力测试相关…

探索C语言中的联合体和枚举:让处理数据更加得心应手

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;http://t.csdnimg.cn/Oytke 小新的主页&#xff1a;编程版小新-CSDN博客 C语言中有内置类型&#xff0c; 比如&…

2024年云计算使用报告,89%组织用多云,25%广泛使用生成式AI,45%需要跨云数据集成,节省成本是云首要因素

备注&#xff1a;本文来自Flexera2024年的云现状调研报告的翻译。原报告地址&#xff1a; https://info.flexera.com/CM-REPORT-State-of-the-Cloud Flexera是一家专注于做SaaS的IT解决方案公司&#xff0c;有30年发展历史&#xff0c;5万名客户&#xff0c;1300名员工。Flex…