[STM32F103C8T6]ADC转换

news2024/11/15 10:45:40

什么是ADC转换?

ADC转换的全称是:Analog-to-Digital Converter,指模拟/数字转换器

ADC的性能指标:

ADC分辨率:

SSA与VREF-一起接到地,DDA与VREF+接到3.3v,所以ADC转换的范围是0---3.3v

所以最后的ADC转换值应该是我们的测量值*分辨率   

分辨率 = 3.3v/2^12 = (3.3/4096)   12位的转换器所以是2的12次方为最小刻度

ADC通道:

 什么叫注入通道?什么叫规则通道?

 我的理解是:注入通道是有特权的通道,可以优先转换,而规则通道是没有特权的通道只能按顺序转换(类似于买票排队,注入通道就类似于老弱病残孕军人之类的,享有优先特权,而规则通道就是普通的排队通道必须排队通过)

ADC转换顺序

 

 注入通道的顺序不是指定的,而是4-JL,如果JL=1,就是从第三个通道开始,如果JL=4才会按照JSQ1,JSQ2,JSQ3,JSQ4的顺序

ADC的触发方式

ADC转换时间

ADC转换模式

 打开扫描模式是扫描被选中的SQR的所有通道

 关闭扫描模式则只扫描被选中的SQR的第一个通道

单次转换是指只扫描一次从第一个到最后一个通道,扫描结束后停止扫描,连续转换是指从第一个通道扫描到最后一个通道再重头扫描

用ADC转换读取烟雾报警器的值

通过查看产品手册,确定了烟雾报警器的接线AO模拟输出口接在PA0上 

 因为ADC是挂在PCLK2上经过分频最大为14MHZ,在cubeMX上RCC我们配置的时钟数上,PCLK2为最大72MHZ,所以我们必须更改分频,使ADC转换时钟在14MHZ以内 

配置ADC 

 关于ADC转换的几个HAL库函数

        HAL_ADC_Start(&hadc1);//启动ADC转换

        原型:HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc)
        参数1:ADC句柄:&hadcx

          HAL_ADC_PollForConversion(&hadc1,50);//阻塞在这,等待转换完成

        原型:HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout)
      参数1:ADC句柄:&hadcx    参数2:堵塞时间

         HAL_ADC_GetValue(&hadc1);//读取ADC转换的值

        原型:uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc)          

       参数1 :ADC句柄:&hadcx 返回值:读取到的转换值 uint32_t型

本次实验是通过串口打印ADC的转换值,所以要使用printf重定向

#include <stdio.h>
#include <string.h>

int fputc(int ch,FILE*f)
{
	unsigned char temp[1] = {ch};
	HAL_UART_Transmit(&huart1,temp,strlen((const char*)temp),0xffff);
	return ch;
}

 使用重定向必须勾选Micro LIB库

 

main.c

int main(void)
{
  /* USER CODE BEGIN 1 */
	uint32_t smoke_value = 0;
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ADC1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
		HAL_ADC_Start(&hadc1);//启动ADC转换
		HAL_ADC_PollForConversion(&hadc1,50);//阻塞在这,等待转换完成
		smoke_value = HAL_ADC_GetValue(&hadc1);//读取ADC转换的值
		printf("smoke_value = :%f\r\n",(3.3/4096)*smoke_value);
		HAL_Delay(500);
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

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

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

相关文章

计算机网络复习——第4章 4.2.3 4.2.4 4.3

4.2.3 IP 地址与 MAC 地址 IP地址&#xff1a;虚拟地址、软件地址、逻辑地址。 网络层和以上各层使用。 放在 IP 数据报的首部。 MAC地址&#xff1a;固化在网卡上的 ROM 中。硬件地址、物理地址。数据链路层使用。放在 MAC 帧的首部。IP 地址放在 IP 数据报的首部&#xff…

Windows命令提示符之常见命令--动态更新

序言&#xff1a; 在大家接触Windows电脑的过程中&#xff0c;一般是直接通过鼠标来进行操作&#xff0c;很少甚至没有用到过命令来执行操作&#xff0c;而想必大家都看过电影里面的黑客大神都是通过密密麻麻的指令来操作的&#xff0c;并且执行的速度也会比我们用鼠标块&…

【严重】Artifex Software Ghostscript 任意命令执行漏洞(POC已公开)(CVE-2023-28879)

漏洞描述 Artifex Software Ghostscript是美国Artifex Software公司的一款开源的PostScript解析器。 Artifex Ghostscript 10.01.0及之前版本中&#xff0c;如果写入缓冲区的数据比总长度少一个字节&#xff0c;则尝试写入转义字符&#xff0c;导致两个字节被写入。攻击者可通…

WPF入门(三)--事件Event调用

1、WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时&#xff0c;应用程序才停止运行。 ShutDown 是隐式或显式发生&#xff0c;可以通过指定 ShutdownMode 的属性值来进行设置。 对ShutdownMode选项的更改&#xff0c;可以直接在App.xaml中更改&a…

酒店管理系统(Servlet+JSP)

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

【网络小知识】TCP协议介绍/三次握手,四次挥手的作用

前端开发人员需要了解三次握手和四次挥手的原因是&#xff0c;这些概念是在客户端和服务器端之间进行网络通信时所涉及到的 TCP 协议的基本知识。而对于前端来讲&#xff0c;如果页面中请求服务端数据时出现连接失败、延迟等问题&#xff0c;就需要对TCP协议中三次握手、四次挥…

VS——Visual Studio 2022 社区版——安装

VS——Visual Studio 2022 社区版——安装 下载安装官网下载&#xff1a;点击【免费Visual Studio 】即可下载安装界面&#xff1a;选择社区版 Community 安装先修改【安装位置】&#xff0c;选择【全部下载后安装】【工作负荷】选择 【使用C桌面开发】【语言包】点击【安装】&…

排序算法(二)

三、桶排序 先看定义&#xff1a; 桶排序会进行两次排序&#xff0c;一次将所有元素分配到不同的桶中&#xff0c;一次针对每个桶排序或再次排序所有元素。 练习题&#xff1a; 1&#xff09; 力扣https://leetcode.cn/problems/top-k-frequent-elements/这道题就是非常典型…

NFS能使使用者访问网络上别处的文件就像在使用自己的计算机一样

先关闭selinux跟防火墙 安装NFS yum install nfs-utils -y 配置共享目录 mkdir /webdata 赋权 chmod 755 /webdata 修改配置文件 vim /etc/exports 换顺序启动 systemctl start rpc-bind systemct start nfs 测试 showmount -e 客户端挂载 创建共享目录 mkdir /we…

BUUCTF-rip

https://www.cnblogs.com/refrain-again/p/15001283.html 看了这个文章 我起码能理解我们栈溢出的目的 在做题之前 我们需要先理解 栈的存储方法 从上往下看 就能理解入栈 说回这道题目 为什么这道题目是栈溢出 1.查看基本信息 checksec file 是kali下的elf文件 相当于w…

ASEMI代理ADI亚德诺AD8061ARTZ-REEL7车规级芯片

编辑-Z AD8061ARTZ-REEL7芯片参数&#xff1a; 型号&#xff1a;AD8061ARTZ-REEL7 −3dB小信号带宽&#xff1a;320MHz −3dB大信号带宽&#xff1a;280MHz 0.1 dB平坦度的带宽&#xff1a;30MHz 斜率&#xff1a;650V/μs 总谐波失真&#xff1a;-77dBc 输入电压噪声&…

Kotlin | 这些隐藏的内存陷阱,你应该熟记于心

作者&#xff1a;Petterp 引言 Kotlin 是一个非常 yes 的语言&#xff0c;从 null安全 &#xff0c;支持 方法扩展 与 属性扩展&#xff0c;到 内联方法、内联类 等&#xff0c;使用Kotlin变得越来越简单舒服。但编程从来不是一件简单的工作&#xff0c;所有简洁都是建立在复杂…

电子招标采购系统:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

营造全面规范安全的电子招投标环境&#xff0c;促进招投标市场健康可持续发展 传统采购模式面临的挑战 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标…

使用SpringAOP的方式修改controller接口返回的数据

1为什么需要修改返回接口的数据&#xff1f; 先看一个关于返回接口数据中包含时间的接口&#xff0c;如下接口中的birth属性&#xff0c;是日期&#xff0c;假设我们不做任何处理&#xff0c;那么在页面&#xff0c;我们看到的将是如下的时间显示效果&#xff0c;这明显不是我…

NVM-无缝切换Node版本

NVM-无缝切换Node版本 如果未使用nvm之前已经下载了node&#xff0c;并且配置了环境变量,那么此时删除这些配置(Node的环境以及Node软件),使用nvm是为了在某些项目中使用低版本的node NVM下载 进入github的nvm readme&#xff1a; https://github.com/coreybutler/nvm-windows…

企业如何利用数据打造新的人才战略?

由于利率上升、能源价格上涨、政治不确定性、全球供应限制以及寻找和资助昂贵人才的问题&#xff0c;企业的优先事项&#xff0c;也就是人们的优先事项&#xff0c;正在以前所未有的速度发生转变。在数据的基础之上迅速做出正确决策&#xff0c;并灵活精准地向他人传达意义。 …

必要的项目管理软件因素

什么样的项目管理软件好&#xff1f;对于一个项目团队来说&#xff0c;从项目开始到项目结束&#xff0c;需要多个部门的配合。每个成员可能会参与一个以上的项目&#xff0c;这通常需要并行的多个项目。据介绍&#xff0c;国外90%以上的项目是用软件管理的&#xff0c;而中国只…

dump 定位分析

在缺少pdb的时候如何分析dump&#xff1f; windbgidaWindbg定位崩溃位置 通过windbg打开dump&#xff0c;并且分析dump !analyze -v 分析&#xff1a; 分析dump&#xff1a; !analyze -v错误原因&#xff1a;读取空指针错误线程&#xff1a;00001e04&#xff0c;可通过命令…

【Linux进阶篇】磁盘及分区

目录 &#x1f341;文件系统 &#x1f342;虚拟机添加磁盘 &#x1f342;磁盘分区方式 &#x1f342;分区格式化 &#x1f342;挂载磁盘 &#x1f341;磁盘高级管理 &#x1f342;LVM&#xff1a;逻辑卷 &#x1f343;创建PV 物理卷 &#x1f343;创建VG 卷组 &#x1f343;创建…

说说你对 Webpack 的理解?解决了什么问题?

1、对webpack的理解 简单来说&#xff0c;webpack 是一个用于现代JavaScript应用程序的静态模块打包工具。 当 webpack处理应用程序时&#xff0c;它会在内部构建一个依赖图&#xff0c;此依赖图对应映射到项目所需的每个模块&#xff08;不再局限js文件&#xff09;&#xf…