STM32 ADC 读取模拟量

问题

我有一个调速开关,模拟量输入,因此需要使用 STM32 读取模拟量,并通过串口输入来调试。串口相关知识参考 STM32 串口输出调试信息。

硬件信息:

  • CubeMX version 6.12.1
  • Keil uVision V5.41.0.0

参考知识

  • 【STM32】HAL库 STM32CubeMX教程九—ADC[通俗易懂]
  • STM32CubeIDE的ADC经验分享
  • STM32CubeMX学习笔记(4)–ADC模数转换器应用
  • STM32CubeMX学习笔记(8)——ADC接口使用

参考上面链接,弄懂下面列出的问题。

基础知识

  1. 什么是 ADC
  2. STM32 ADC 介绍
  3. ADC 单通道 与 多通道,单路 ADC 与多路 ADC。
  4. ADC 数据的最对齐和右对齐
  5. ADC 注入通道 与 规则通道
  6. ADC 时钟, = APB2 / Prescale, 最高 14MHz, ADC 的 parameter setting 中设置 Prescale。
  7. 多个通道,读取顺序是什么,rank 设置

数据读取

  1. 软件触发,使用函数直接读取
  2. 开启 ADC 中断回调函数,在其中使用函数读取数据。相当于把上一步代码搬到中断函数中。
  3. 轮询或者扫描模式
  4. 使用 Timer 触发定时读取 ADC,参考链接。

注意

There is no hardware ADC calibration for our STM32F4, it is self-calibrated upon reset and once ADC is activated. 来源于:There are no instructions for calibrating ADC in STM32F407。

示例程序

一个模拟量输入

参考:STM32CUBEMX的adc读取 stm32 adc hal。

CubeMX 配置

在这里插入图片描述

程序

  • 串口中使用了部分字符串处理函数, 在 main.c 添加
/* USER CODE BEGIN Includes */
#include "stdio.h"
#include <string.h>
/* USER CODE END Includes */
  • main.c 中定义变量存储 ADC 转换结果。int main 函数中间定义,
  /* USER CODE BEGIN Init */uint16_t adc_value;/* USER CODE END Init */
  • while 循环中读取 模拟量引脚。前三行是读取数据,后面是处理数据,输出到串口。
/* USER CODE BEGIN 3 */HAL_ADC_Start(&hadc1);HAL_ADC_PollForConversion(&hadc1,50);adc_value = HAL_ADC_GetValue(&hadc1);char str1[5];sprintf(str1, "%d", adc_value);HAL_UART_Transmit(&huart1,str1,sizeof(str1),10);// Sending in normal modeHAL_Delay(3000);}/* USER CODE END 3 */

多个模拟量输入

参考:STM32CUBEMX的adc读取 stm32 adc hal。

CubeMX

在这里插入图片描述

编程

  • 串口中使用了部分字符串处理函数, 在 main.c 添加
/* USER CODE BEGIN Includes */
#include "stdio.h"
#include <string.h>
/* USER CODE END Includes */
  • main.c 中定义变量存储 ADC 转换结果。int main 函数中间定义 数组 按顺序存储 ADC 引脚数据。
/* USER CODE BEGIN PV */
uint16_t adc_value[2];
/* USER CODE END PV */
  • while 循环中读取 模拟量引脚。前三行是读取数据,后面是处理数据,输出到串口。
    /* USER CODE BEGIN 3 */for(int i=0; i<2; i++){HAL_ADC_Start(&hadc1);HAL_ADC_PollForConversion(&hadc1, 1);adc_value[i] = HAL_ADC_GetValue(&hadc1);}char tmp[5];sprintf(tmp, "%d", adc_value[0]);char str1[50] = "Knob: ";strcat(str1, tmp);char str2[50] = "---Driving wheel: ";sprintf(tmp, "%d", adc_value[1]);strcat(str2, tmp);strcat(str1, str2);HAL_UART_Transmit(&huart1,str1,sizeof(str1),10);// Sending in normal modeHAL_Delay(1000);}/* USER CODE END 3 */

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

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

相关文章

[每周一更]-(第124期):模拟面试|缓存面试思路解析

文章目录 31 为什么 Redis 不立刻删除已经过期的数据?1. Redis 是怎么删除过期 key 的?2. Redis 为什么不立刻删除已经过期的 key?3. Redis 为什么不每个 key 都启动一个定时器,监控过期时间?4. Redis 是如何执行定期删除的?5. 为什么 Redis 在定期删除的时候不一次性把所…

操作系统——揭开盖子

计算机执行时——取指执行 es:bx等于从0x9000开始&#xff0c;到0x90200结束

uni-app 认识条件编译,了解多端部署

一. 前言 在使用 uni-app 进行跨平台开发的过程中&#xff0c;经常会遇到需要针对不同平台或不同环境进行条件编译的情况。条件编译是一种在编译过程中根据指定条件选择不同代码路径的技术&#xff0c;可以帮助我们在不同平台或环境下编写不同的代码&#xff0c;以适应不同的平…

模糊控制系统的设计(取材bilibili_蓝天的季洁)

模糊控制原理和传统控制原理&#xff0c;在框图上的区别实际上只在控制器方面存在差异&#xff0c;将传统的控制器改为了模糊控制器&#xff08;fuzzy controller&#xff09;。 通过举例说明&#xff0c;将原有的[0,100]的参数通过隶属函数规则&#xff0c;&#xff08;类似于…

pytest日志总结

pytest日志分为两类&#xff1a; 一、终端&#xff08;控制台&#xff09;打印的日志 1、指定-s&#xff0c;脚本中print打印出的信息会显示在终端&#xff1b; 2、pytest打印的summary信息&#xff0c;这部分是pytest 的默认输出&#xff08;例如测试结果PASSED, FAILED, S…

向量数据库FAISS之四:向量检索和 FAISS

来自 YouTube 1.相似度搜索的传统方法(Jaccard, w-shingling, Levenshtein) 1.Jaccard 距离 公式 Jaccard ( A , B ) 1 − ∣ A ∩ B ∣ ∣ A ∪ B ∣ \text{Jaccard}(A, B) 1 - \frac{|A \cap B|}{|A \cup B|} Jaccard(A,B)1−∣A∪B∣∣A∩B∣​ 其中&#xff0c; A 和 …

深入探究蓝牙节能技术:SNIFF与HOLD模式

目录 一、概述 1.1. Sniff Mode&#xff08;嗅探模式/呼吸模式&#xff09; 1.1.1.定义与目的 1.1.2 工作原理 1.1.3 进入与退出 1.2. Hold Mode&#xff08;保持模式&#xff09; 1.2.1. 定义与目的 1.2.2. 工作原理 1.2.3. 进入 1.2.4. 通知机制 二、Sniff mode&a…

Linux驱动开发快速入门——字符设备驱动(直接操作寄存器设备树版)

Linux驱动开发快速入门——字符设备驱动 前言 笔者使用开发板型号&#xff1a;正点原子的IMX6ULL-alpha开发板。ubuntu版本为&#xff1a;20.04。写此文也是以备忘为目的。 字符设备驱动 本小结将以直接操作寄存器的方式控制一个LED灯&#xff0c;可以通过read系统调用可以…

ROS机器视觉入门:从基础到人脸识别与目标检测

前言 从本文开始&#xff0c;我们将开始学习ROS机器视觉处理&#xff0c;刚开始先学习一部分外围的知识&#xff0c;为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。我采用的笔记本是联想拯救者游戏本&#xff0c;系统采用Ubuntu20.04&#xff0c;ROS采用noetic。 颜…

电子电气架构 ---漫谈车载网关

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…

@Autowired与构造器注入区别,为什么spring推荐使用构造注入而不是Autowired?

目录 1.简介 2.了解两种注入方式的全过程 2.1 Autowired字段注入 2.2 构造函数注入 3.使用autowired注解注入有以下问题 3.1空指针异常 3.2测试不友好 4.使用Lombok去简化构造函数注入的臃肿代码 5.小结 5.1注解注入 5.2构造函数注入 1.简介 使用Spring开发时&#…

优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本

Transformer 架构由 Vaswani 等人在 2017 年发表的里程碑式论文《Attention Is All You Need》中首次提出&#xff0c;如今已被广泛认为是过去十年间最具开创性的科学突破之一。注意力机制是 Transformer 的核心创新&#xff0c;它为人工智能模型提供了一种全新的方法&#xff…

在Excel中处理不规范的日期格式数据并判断格式是否正确

有一个Excel表&#xff0c;录入的日期格式很混乱&#xff0c;有些看着差不多&#xff0c;但实际多一个空格少一个字符很难发现&#xff0c;希望的理想格式是 1980-01-01&#xff0c;10位&#xff0c;即&#xff1a;“YYYY-mm-dd”&#xff0c;实际上数据表中这样的格式都有 19…

医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22

小罗碎碎念 今天给大家推荐一本入门书籍。 这本书由Uday Kamath、Kenneth L. Graham和Wael Emara撰写&#xff0c;深入探讨了Transformer模型在机器学习领域的应用&#xff0c;特别是自然语言处理&#xff08;NLP&#xff09;。 原文pdf已经上传至知识星球的【入门书籍】专栏&…

SpringCloud Gateway转发请求到同一个服务的不同端口

SpringCloud Gateway默认不支持将请求路由到一个服务的多个端口 本文将结合Gateway的处理流程&#xff0c;提供一些解决思路 需求背景 公司有一个IM项目&#xff0c;对外暴露了两个端口8081和8082&#xff0c;8081是springboot启动使用的端口&#xff0c;对外提供一些http接口…

Parker派克防爆电机在实际应用中的安全性能如何保证?

Parker防爆电机确保在实际应用中的安全性能主要通过以下几个方面来保证&#xff1a; 1.防爆外壳设计&#xff1a;EX系列电机采用强大的防爆外壳&#xff0c;设计遵循严格的防爆标准&#xff0c;能够承受内部可能发生的爆炸而不破损&#xff0c;利用间隙切断原理&#xff0c;防…

虚拟形象+动作捕捉:解锁品牌N种营销玩法

近年来&#xff0c;随着Z世代年轻人对于二次元文化的热爱&#xff0c;各种二次元内容频频出圈。为了吸引年轻观众的注意&#xff0c;虚拟IP形象成为了品牌营销的“新宠”与“利器”为品牌踏入元宇宙蓝海提供了关键的切入点。在此背景下虚拟形象动作捕捉技术的组合应用方式正成为…

空间计算、物理计算、实时仿真与创造拥有「自主行为」的小狗 | 播客《编码人声》

「编码人声」是由「RTE开发者社区」策划的一档播客节目&#xff0c;关注行业发展变革、开发者职涯发展、技术突破以及创业创新&#xff0c;由开发者来分享开发者眼中的工作与生活。 虚拟世界与现实世界的界限逐渐模糊&#xff0c;已然成为不争的事实。但究竟哪些曾经的幻想已然…

影响电阻可靠性的因素

一、影响电阻可靠性的因素&#xff1a; 影响电阻可靠性的因素有温度系数、额定功率&#xff0c;最大工作电压、固有噪声和电压系数 &#xff08;一&#xff09;温度系数 电阻的温度系数表示当温度改变1摄氏度时&#xff0c;电阻阻值的相对变化&#xff0c;单位为ppm/C.电阻温度…

JAVA后端如何调用百度的身份证识别API

大家好&#xff0c;我是 程序员码递夫 。 今天给大家分享的是 JAVA后台如何调用百度的身份证识别API。 1、前言 我们做APP开发时常遇到 身份证认证或资质认证的 需求&#xff0c; 通过上传身份证照片是个常用的操作&#xff0c; 后台对上传的身份证照信息进行识别&#xff0…