STM32的ADC电压采集

时间记录:2024/2/9

一、ADC相关知识点

(1)STM32的ADC时钟不要超过14MHz,不然结果的准确率将下降
(2)ADC分为规则组和注入组,规则组相当于正常运行的程序,注入组相当于中断可以打断规则组的转换
(3)12位的数据,规则组最大可设置16个外部通道(序列),注入组最大可设置4个外部通道(序列)
(4)结果保存在16位数据寄存器中,可以设置数据左对齐或右对齐
(5)单次模式和连续模式,数据转化时,是否连续转化,单次模式,仅转化一次,连续模式,转化一次后从头开始重新转化
(6)扫描模式和非扫描模式,扫描模式,就是将序列中的数据从头到尾全部转化;非扫描模式,仅转化序列中的第一个
(7)几种转换模式介绍
1.单次非扫描模式:给出一个触发后会将序列1对应的通道数据进行转换,然后产生EOC中断,并且只转换1次
单次非扫描模式
2.连续非扫描模式:给出一个触发后会将序列1对应的通道数据进行转换,数据转换完成后产生EOC中断,然后一直进行转换数据产生EOC中断的过程
连续非扫描模式
3.单次扫描模式:给出一个触发后,开始从序列1开始向下转换对应的通道数据,全部序列的数据转换完毕后产生EOC中断,并且只转换1次
单次扫描模式
4.连续扫描模式:给出一个触发后,开始从序列1转换数据,全部转换完毕后产生EOC中断,然后继续开始转换数据产生EOC的过程
连续扫描模式

二、示例代码(单次、非扫描模式)

(1)头文件

#ifndef __MYADC_H__
#define __MYADC_H__
#include "stm32f10x.h"//adc初始化
void vAdcInit(void);
//获取电压值
float xAdcGetValue(void);#endif

(2)源文件

#include "my_adc.h"void vAdcInit(void)
{//1.使能时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA,ENABLE);//2.配置初始化GPIOGPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;//模拟输入GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStruct);//3.设置ADC分频因子RCC_ADCCLKConfig(RCC_PCLK2_Div6);//ADC时钟72M/6=12M,不能超过14M//4.初始化ADC参数ADC_InitTypeDef ADC_InitStruct;ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;//数据对齐方式,右对齐ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;//连续转换模式,非连续转换ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;//独立模式,只使用1个ADC时配置,ADC1和ADC2同时使用时配置为双重模式ADC_InitStruct.ADC_ScanConvMode = DISABLE;//扫描模式,非扫描模式ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//触发方式,外部触发、硬件或软件触发ADC_InitStruct.ADC_NbrOfChannel = 1;//转换的通道数ADC_Init(ADC1,&ADC_InitStruct);//5.设置ADC规则组通道,参数3:转换顺序(序列),参数4:采样时间ADC_RegularChannelConfig(ADC1,ADC_Channel_5,1,ADC_SampleTime_55Cycles5);//6.使能ADCADC_Cmd(ADC1,ENABLE);//7.ADC校准ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1) == SET);ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1));
}float xAdcGetValue(void)
{uint16_t temp=0;ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能软件触发转换while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//等待转换结束temp=ADC_GetConversionValue(ADC1);//获取电压值return (float)3.3*temp/4095;
}

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

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

相关文章

贵金属交易包括哪些?香港有哪些贵金属交易平台?

随着金融市场的不断发展,贵金属交易作为一种投资方式,越来越受到投资者的关注。贵金属交易不仅具有投资价值,还能够为投资者提供规避风险和保值的工具。本文将介绍贵金属交易的种类和香港的贵金属交易平台。 一、贵金属交易的种类 贵金属交…

2024.2.7-8 寒假训练记录(21)

文章目录 洛谷P3193 [HNOI2008] GT考试ATC abc339E Smooth SubsequenceATC abc339F Product Equality 洛谷P3193 [HNOI2008] GT考试 题目链接 KMPdp矩阵快速幂 还没有理解得很清楚&#xff0c;主要是对KMP理解还不够深刻 #include <bits/stdc.h>using namespace std;…

C++泛型编程:typename和class关键字的区别

在STL中基本上都使用了模板类的声明&#xff0c;即template。在模板类的声明中&#xff0c;有两种方式&#xff1a; template <class T> template <typename T> 这里&#xff0c;class和typename是相同的。 也就是说&#xff0c;在声明模板类型参数的时候&#xf…

算法——数论——GCD和LCM

目录 GCD&#xff08;最大公约数&#xff09; 1、欧几里得算法 LCM&#xff08;最小公倍数&#xff09; 一、试题 算法训练 抗击虫群 GCD&#xff08;最大公约数&#xff09; 整数 a 和 b 的最大公约数是指能同时整除 a 和 b 的最大整数&#xff0c;记为 gcd(a,b)-a的因子和…

为什么在产品设计和制造过程中要采用FMEA——SunFMEA软件

在产品设计和制造过程中&#xff0c;FMEA是一种非常重要的工具&#xff0c;用于评估潜在的故障模式及其对产品性能的影响。通过分析产品设计或流程中可能出现的故障模式&#xff0c;并评估其对产品性能和客户满意度的潜在影响&#xff0c;来预测和防止产品在生产和运行过程中出…

火星符号运算 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 已知火星人使用的运算符号为 #和$ 其与地球人的等价公式如下 x#y2*x3*y4 x$y3*xy2x y是无符号整数。地球人公式按照c语言规则进行计算。火星人公式中&#xff0…

心情切换器(仅供娱乐)

本次分享主要内容较为新奇&#xff0c;作用程度可以说没用&#xff0c;仅供娱乐(注&#xff1a;本次成果使用的为vue框架实现) 一、静态及呈现图 <div class"switchMood"><h2>心情转换器</h2><!--输入当前心情表单--><div class"fr…

LM403-Pro-Kit数据手册

如上图所示&#xff0c;LM403-Pro-Kit评估板由ST-LINK、跳线、LM403模组、按键、LED以及天线接口等组成。 USB连接PC即可以在线仿真、下载和串口打印调试输出、输入操作。 电源开关 控制LM403模组的电源与LDO的3.3V的通断。 MicroUSB 板子供电及ST-LINK与PC机连接的接口。 S…

代码随想录算法——数组

目录 1、二分查找法 2、移除元素 3、有序数组的平方 4、长度最小的子数组 5、螺旋矩阵II 1、二分查找法 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在…

Java多线程:线程安全

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、线程状态1、New&#xff08;初始状态&#xff09;2、Terminated&#xff08;终止状态&#xff09;3、Runnable&#xff08;…

以管理员权限删除某文件夹

到开始菜单中找到—命令提示符—右击以管理员运行 使用&#xff1a;del /f /s /q “文件夹位置” 例&#xff1a;del /f /s /q "C:\Program Files (x86)\my_code\.git"

Acwing154滑动窗口

theme: channing-cyan 题目 给定一个大小为 n≤10^6 的数组。 有一个大小为 k 的滑动窗口&#xff0c;它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子&#xff1a; 该数组为 [1 3 -1 -3 5 3 6 7]&#x…

【回溯算法】LCR 079. 子集

LCR 079. 子集 解题思路 初始化一个空的列表 res 来存储所有子集&#xff0c;并初始化一个空的列表 track 来跟踪当前正在构建的子集。 定义一个名为 subsets 的方法&#xff0c;该方法接受一个整数数组 nums 作为输入。此方法作为生成子集的入口点。 在 subsets 方法内部&a…

Flink从入门到实践(二):Flink DataStream API

文章目录 系列文章索引三、DataStream API1、官网2、获取执行环境&#xff08;Environment&#xff09;3、数据接入&#xff08;Source&#xff09;&#xff08;1&#xff09;总览&#xff08;2&#xff09;代码实例&#xff08;1.18版本已过时的&#xff09;&#xff08;3&…

《MySQL 简易速速上手小册》第9章:高级 MySQL 特性和技巧(2024 最新版)

文章目录 9.1 使用存储过程和触发器9.1.1 基础知识9.1.2 重点案例&#xff1a;使用 Python 调用存储过程实现用户注册9.1.3 拓展案例 1&#xff1a;利用触发器自动记录数据更改历史9.1.4 拓展案例 2&#xff1a;使用 Python 和触发器实现数据完整性检查 9.2 管理和查询 JSON 数…

VBA技术资料MF117:测试显示器大小

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

图论与图数据应用综述:从基础概念到知识图谱与图智能

目录 前言1 图论基础概念1.1 节点度1.2 度分布1.3 邻接矩阵 2 探索图的高级概念2.1 最短路径的关键性2.2 图的直径与平均路径的意义2.3 循环与路径类型的多样性 3 深入探讨图的广泛应用领域3.1 知识图谱的知识管理3.2 图智能在复杂决策中的应用3.3 图数据挖掘与分析的多领域应用…

Vue3富文本组件UEditor ,vue-ueditor-wrap@3.x

一、Vue 中UEditor 2.0版本跟3.0版本不兼容 重点安装版本不同 使用详细介绍&#xff1a; vue-ueditor-wrap - Vue UEditor v-model双向绑定 二、安装流程 1.安装 # vue-ueditor-wrap v3 仅支持 Vue 3 npm i vue-ueditor-wrap3.x -S # or yarn add vue-ueditor-wrap3.x …

[C#]winform制作仪表盘好用的表盘控件和使用方法

【仪表盘一般创建流程】 在C#中制作仪表盘文案&#xff08;通常指仪表盘上的文本、数字或指标显示&#xff09;涉及到使用图形用户界面&#xff08;GUI&#xff09;组件&#xff0c;比如Windows Forms、WPF (Windows Presentation Foundation) 或 ASP.NET 等。以下是一个使用W…

测试:JMeter如何获取非json格式的响应参数

JMeter如何获取非json格式的响应参数 在 JMeter 中获取非 JSON 格式的响应参数通常涉及使用后置处理器来提取这些参数。以下是一些常见的方法来获取不同类型的响应数据&#xff1a; 正则表达式提取器&#xff1a; 适用于提取文本、HTML、XML 等格式中的特定文本。使用正则表达…