news 2026/9/3 7:28:06

STM32 CubeIDE 读取模拟信号电压值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32 CubeIDE 读取模拟信号电压值

ADC模数转换器:把连续的模拟信号(电压、电流、温度、声音等),转成离散的数字信号(二进制代码),是模拟世界与数字系统的桥梁。

平常的电信号分为数字信号和模拟信号,ADC有许多实现模拟数字转换的方法,这里使用的是逐次逼近法。

模拟信号:连续不断变化的电压值。

数字信号: 高/低电平。

逐次逼近法(以STM32F103内的12位二进制ADC为例):

二进制:0000 0000 0000 ---- 1111 1111 1111 转换为10进制

十进制: 0 (0V) ---- 4095 (3.3V)

假设有一个未知模拟电压 Vin,我们要转成数字。
内部有一个 DAC + 比较器:
- DAC:把数字转成模拟电压
- 比较器:Vin > DAC输出?→ 是/否

步骤:从高位到低位,一位一位试,大就留1,小就清0,全部试完,数字就出来了。

1. 先试最高位(bit11)=1
输出电压 → 和 Vin 比
- 若 Vin 更大 → 保留 1
- 若 Vin 更小 → 改为 0
2. 再试下一位(bit10)=1
把上一轮结果 + 这一位 → 再比较
- 大 → 留 1
- 小 → 改 0
3. 依次往下:bit9 → bit8 → bit7 → bit6 → bit5 → bit4 → bit3 → bit2 → bit1 → bit0

12次比较后,12 位数字就确定了。

然后ADC将结果放入数据寄存器,程序就可以从此寄存器取到转换结果并计算得待测电压。

结果 / 4095 * 3.3V = 待测电压

ADC测量电压值(例)

在学习板上有一个蓝色的电位器

其内部结构通过调节输出引脚在电阻上的位置来改变PA5测的电压值

在CubeIDE新建工程在SYS将Debug模式设置为Serial Wire,设置RCC高速外部时钟为晶振,时钟设置HCLK为72MHz将ADC专用的分频器改为/6

在ADC1将通道5启用,将持续转换模式开启

打开串口用于输出ADC测量结果

最后实现结果通过小螺丝刀调节电位器 ADC测量的电压值就会改变。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 0:12:46

2025年Agent概念落地,2026年智能体生产力基础设施:如何规模化部署Agent?收藏这份学习指南!

本文探讨了Agent智能体在2025年概念的扎根和开源生态的爆发,以及模型在真实工作能力上的进步和专用化趋势。文章重点分析了企业从一次性Agent实验转向大规模运行所面临的关键问题,并提出了企业级Agent栈的五大层(上下文、模型、编排、安全、交…

作者头像 李华
网站建设 2026/9/3 0:11:37

Flask-Migrate深度详解

1. 他是什么Flask-Migrate 是一个给 Flask 应用做数据库版本控制的工具。它相当于给数据库的每次改动拍了一张快照,并且能随时退回到任意一张快照的状态。想象你在装修厨房:今天装水槽、明天改电路、后天换橱柜。Flask-Migrate 就像一本装修日记&#xf…

作者头像 李华
网站建设 2026/9/2 21:37:53

如何理解词嵌入的维度?维度越大越好吗?

在学习自然语言处理(NLP)时,很多人都会遇到一个问题: 词嵌入的维度到底是什么意思? 为什么有的模型用 100 维,有的用 300 维,而 BERT 却是 768 维? 维度越大越好吗? 每…

作者头像 李华
网站建设 2026/9/2 22:25:54

SpringBoot打包可执行jar包启动方式:JarLauncher、PropertiesLauncher

文章目录1, 项目结构2, 默认打包可执行jar启动主类:JarLauncher3, 打包可执行jar启动主类:PropertiesLauncher1, 项目结构 springboot-tar-demo/ ├── src/ │ ├── main/ │ │ ├── assembly/ │ │ │ └── assembly.xml # 上述…

作者头像 李华