STM32 ADC --- 任意单通道采样

STM32 ADC — 单通道采样

文章目录

  • STM32 ADC --- 单通道采样
    • cubeMX配置
    • 代码修改:
    • 应用

  • 使用cubeMX生成HAL工程

需求:有多个通道需要进行ADC采样,实现每次采样只采样一个通道,且可以随时采样不同通道的功能

cubeMX配置

在这里插入图片描述
这里我们想通过10通道和11通道分别进行ADC采样。需要注意的是:当ADC规则转换中配置的转换数大于1时,cubeMX会自动将扫描转换模式使能。但这里我们实际需要扫描转换模式为关闭,这里可以等下在代码中修改。还有个需要注意的地方是结束转换的选择:单个通道完成转换时即触发EOC标志位

代码修改:

为了方便后续继续使用cubeMX生成代码不影响改动,我们采用重新初始化ADC的方式来实现需求:

void adc1_init(void) {/* 配置ADC引脚 */GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);/* 重新初始化ADC1 */HAL_ADC_DeInit(&hadc1);hadc1.Instance = ADC1;hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;hadc1.Init.Resolution = ADC_RESOLUTION_12B;hadc1.Init.ScanConvMode = DISABLE; //ENABLE;hadc1.Init.ContinuousConvMode = DISABLE;hadc1.Init.DiscontinuousConvMode = DISABLE;hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;hadc1.Init.NbrOfConversion = 1;hadc1.Init.DMAContinuousRequests = DISABLE;hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;if (HAL_ADC_Init(&hadc1) != HAL_OK){};}uint16_t adc_sample(ADC_HandleTypeDef *hadc, uint32_t adc_channel) {ADC_ChannelConfTypeDef sConfig = {0};sConfig.Channel = adc_channel;sConfig.Rank = 1;sConfig.SamplingTime = ADC_SAMPLETIME_56CYCLES;HAL_ADC_ConfigChannel(hadc, &sConfig);HAL_ADC_Start(hadc);HAL_ADC_PollForConversion(hadc, 100); //等待转换完成uint16_t value = HAL_ADC_GetValue(hadc);return value;
}

通过adc1_init()函数将ADC1重新初始化

  • 将扫描转换模式修改为DISABLE
  • 将转换通道数设置为1
  • 后续还有其它引脚通道需要转换时在配置ADC引脚处添加相关的初始化即可

后续便可以通过adc_sample()函数根据通道号进行ADC采样了,这里的采样方式为轮询等待模式。

应用

在这里插入图片描述

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

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

相关文章

python读取Oracle库并生成API返回Json格式

一、安装必要的库 首先,确保已经安装了以下库: 有网模式 pip install flask pip install gevent pi install cx_Oracle离线模式: 下载地址:https://pypi.org/simple/flask/ # a. Flask Werkzeug-1.0.1-py2.py3-none-any.whl J…

开发 + 安全:网络安全的协作方法

开发团队和安全团队之间由来已久的紧张关系一直是组织内部摩擦的根源。开发人员优先考虑速度和效率,旨在通过快节奏、迭代的开发周期快速交付功能和产品并高效前进。另一方面,安全团队努力平衡风险和创新,但必须专注于使用护栏保护敏感数据和…

SpringAOP模拟实现

文章目录 1_底层切点、通知、切面2_切点匹配3_从 Aspect 到 Advisor1_代理创建器2_代理创建时机3_Before 对应的低级通知 4_静态通知调用1_通知调用过程2_模拟 MethodInvocation 5_动态通知调用 1_底层切点、通知、切面 注意点: 底层的切点实现底层的通知实现底层的…

头歌——VLAN基本配置第一关

任务描述 本关任务:实现跨交换机的VLAN。 相关知识 为了完成本关任务,你需要掌握:1.VLAN的定义,2.VLAN的类型。 实验步骤 (1)新建Packet Tracer拓扑图; (2)划分VLAN&…

CentOS使用中遇到的问题及解决方法

一、CentOS 7网络配置(安装后无法联网问题) 现象说明 在安装CentOS系统后,有可能出现无法联网的问题,虚拟机中的网络配置并没有问题,而系统却无法联网,也ping不通。 原因描述 CentOS默认开机不启动网络,因…

【AI+教育】一些记录@2024.11.16

《万字长文,探讨关于ChatGPT的五个最核心问题》 万字长文,探讨关于ChatGPT的五个最核心问题关于 ChatGPT 铺天盖地的信息让人无所适从。本文则试图提炼出五个关键问题:如何理解这次范式突破,未来能达到的技术天花板,行…

CEF编译指南2024 Windows篇-CEF简介(一)

1. 引言 在现代桌面应用程序开发中,Web技术的应用越来越广泛。许多开发者希望能够在传统桌面应用中嵌入Web内容,既保留了原生应用的性能优势,又能享受Web开发的便利性。CEF(Chromium Embedded Framework)作为一个基于…

机器翻译-基础与模型

一、机器翻译发展历程 基于规则的-->基于实例的-->基于统计方法的-->基于神经网络的 传统统计机器翻译把词序列看作离散空间里的由多个特征函数描述的点,类似 于 n-gram 语言模型,这类模型对数据稀疏问题非常敏感。神经机器翻译把文字序列表示…

计算机网络——路由选择算法

路由算法 路由的计算都是以子网为单位计算的——找到从原子网到目标子网的路径 链路状态算法 序号——(源路由器,序号)——如果发现这个序号重复或者老了——就不扩散 先测量——再泛洪获得路由 路由转发情况 若S——>W是21则不更改——…

【金融风控项目-07】:业务规则挖掘案例

文章目录 1.规则挖掘简介2 规则挖掘案例2.1 案例背景2.2 规则挖掘流程2.3 特征衍生2.4 训练决策树模型2.5 利用结果划分分组 1.规则挖掘简介 两种常见的风险规避手段: AI模型规则 如何使用规则进行风控 **使用一系列逻辑判断(以往从职人员的经验)**对客户群体进行区…

实时监控,智能分析:输电线路多目视频监控装置提升运维效率

在快速变迁的现代社会中,安全监控技术已成为各行各业安全管理体系的核心组成部分。无论是工厂生产线的安全保障,城市治安的维护,还是偏远区域电力巡检的顺利进行,都离不开高效且智能的监控解决方案。 在高压输电线路的监测领域&am…

【MCU】GD32H7定时器使用外部时钟源

1、定时器可以使用系统内部的mcuclk,也可以通过管脚使用外部输入的时钟源 2、GD32H7怎么使用外部的源来驱动定时器呢 3、GD32H7通用定时器的框图如下: 这是官方手册上的图,不得不说,画的不够详细,只是一个大概的框图…

IDEA2023 SpringBoot整合Web开发(二)

一、SpringBoot介绍 由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot提供了一种新的编程范式,可以更加快速便捷…

英伟达AI超大规模组网平台方案

英伟达GPU:AI超大规模组网 "英伟达,引领GPU技术革新,持续加速AI超大规模组网进程。自2024年起,英伟达每2年将推出一代新型GPU架构,如今的Blackwell芯片已投入生产。展望未来,2025年,我们将…

计算机网络:概述知识点及习题练习

网课资源: 湖科大教书匠 1、因特网 网络之间需要路由器进行互联,互联网是网络的网络,因特网是最大的互联网,连接到网络的设备称为主机,一般不叫路由器为主机。 因特网发展:ARPNET->三级结构因特网&am…

makefile速通

makefile速通 文章目录 makefile速通1.基础显式规则隐含规则%*通配符 赋值 伪目标CFLAGS 2.函数wildcardpatsubst 3.项目实例 1.基础 显式规则 目标文件&#xff1a;依赖文件 [TAB] 指令隐含规则 % 任意* 所有通配符 符号含义$^所有依赖文件$所有目标文件$<所有依赖文…

分数加减

#include <stdio.h> #include <stdlib.h>// 求最大公因数 int gcd(int a, int b) {return b 0? a : gcd(b, a % b); }// 化简分数 void simplify(int *num, int *den) {int g gcd(*num, *den);*num / g;*den / g;if (*den < 0) {*num * -1;*den * -1;} }//…

Misc_01转二维码(不是二进制)

例题ctfhub/隐写v2.0 打开是一张图片 文件分离得到zip&#xff0c;爆破密码得到7878 打开得到0和1&#xff0c; !!!不是二进制转图片&#xff0c;直接是二维码 缩小能看到 000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000…

如何修改网络ip地址:一步步指南‌

在当今这个数字化时代&#xff0c;网络已成为我们日常生活与工作中不可或缺的一部分。无论是浏览网页、在线办公还是享受流媒体服务&#xff0c;稳定的网络连接和适当的IP地址管理都是确保良好体验的关键。然而&#xff0c;出于隐私保护、绕过地理限制或测试网络环境等需要&…

STL——vector(1)

博客ID&#xff1a;LanFuRenC系列专栏&#xff1a;C语言重点部分 C语言注意点 C基础 Linux 数据结构 C注意点 今日好题 声明等级&#xff1a;黑色->蓝色->红色 欢迎新粉加入&#xff0c;会一直努力提供更优质的编程博客&#xff0c;希望大家三连支持一下啦 目录 尾…