【STM32技巧】ADC模拟量采集的几种用法

【STM32技巧】ADC模拟量采集的几种用法1 AD 单次转换 软件启动通过程序启动 AD AD 采集一次 我们就去读一次 这种情况 建议开启 AD 转换完成中断 在中断中读出 AD 值并做处理 初始化的时候 启动一次 然后在主循环里 每隔一秒启动一次 在中断回调函数里 进行相关处理 电脑输出如下 2 连续转换 软件启动在方法 1 的基础上做调整 从单次转换 变成连续转换 也就是说 只需要开启一次 它就能一直转换 直到程序让它停止 优点是省去了频繁开启中断的麻烦 缺点是需要频繁进入中断去读 AD 值 初始化的时候开

1. AD单次转换+软件启动

  • 通过程序启动AD,AD采集一次,我们就去读一次。这种情况,建议开启AD转换完成中断,在中断中读出AD值并做处理。
    在这里插入图片描述

  • 初始化的时候,启动一次。然后在主循环里,每隔一秒启动一次。
    在这里插入图片描述

  • 在中断回调函数里,进行相关处理:
    在这里插入图片描述

  • 电脑输出如下:
    在这里插入图片描述

2. 连续转换+软件启动

  • 在方法1的基础上做调整,从单次转换,变成连续转换。也就是说,只需要开启一次,它就能一直转换,直到程序让它停止。
  • 初始化的时候开启AD即可,后面无需再频繁开启。
    在这里插入图片描述

  • 在中断中进行处理,当AD转换次数达到1000次的时候,停止转换。

3. 连续转换+DMA+手动启动

  • 在方法2的基础上,引入DMA这个东西。不得不说,DMA真的是很方便,省去了很多手动操作的麻烦。可以直接把指定数量的AD转换值存入数组里,可以单次存入,也可以循环覆盖。
  • 在方法2里面,每次转换完成,需要我们手动去读一下AD值;启动DMA之后,完全省掉了这个过程,只需要等待1000个值全部转换完成之后触发一个中断即可。
    在这里插入图片描述

  • 初始化阶段,开启DMA传输:
    在这里插入图片描述

  • 传输完成之后产生一个中断:
    在这里插入图片描述

  • 这时候看数组里面的值:
    -

4.连续转换+DMA+定时器+手动启动

  • 方法4是在方法3的基础上稍微做了一些调整,主要面向的需求是:固定时间间隔的AD采样。比如说,每隔0.1秒,需要连续采样100次。

通常的做法是,使用定时器做一个定时中断,在定时中断里,调用函数:

HAL_ADC_Start_DMA(&hadc1,(uint32_t *)ad_value,1000); //启动,同时开启中断 

方法和原理都比较简单,就不细说了。

5. 连续转换+DMA+定时器触发

  • 方法5是对方法4里面的需求的实现过程进行了优化。STM32的定时器可以自动触发AD转换,省去了手动启动的麻烦。例如STM32的TIM1,TIM2,TIM3和TIM4,以及外部中断,都可以做为启动AD转换的触发源。
  • DMA这里要开启循环模式:在这里插入图片描述
  • TIM3的配置如下,这里实现了一个1ms的定时,也就是说每隔1ms自动触发一次AD转换:

在这里插入图片描述

  • 主函数里代码如下:
    在这里插入图片描述

  • 然后,中断里做一下处理即可:
    -

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225575.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午9:00
下一篇 2026年3月17日 上午9:00


相关推荐

  • dos的批量copy命令

    dos的批量copy命令1、主要是有需求,采取百度的,发现挺好的,还是帮作者推广一下。来自https://www.cnblogs.com/xiykj/archive/2004/01/13/13299548.html“Dos命令复制所有目录下同类型文件”2、需求:想拷贝文件夹内部的同类型文件(比如*.jpg),但是这个jpg文件在不同的文件夹下面,因此copy起来还是不方便,因此需要寻求命令代码解决3、命令是:for/r%iin(.jpg)*docopy“%i”/yd:\img其中,加粗的是变成自己需

    2022年7月18日
    23
  • 职业规划-IT方向(超详细,超具体)

    职业规划-IT方向(超详细,超具体)前言今天是周五 本来想好好休息 前天写了一篇博文 说出我的故事 献给正在迷茫的你 https blog csdn net weixin article details 不少读者留言不知该如何做职业规划 于是继续拖着忙碌了一周疲倦的身体 坐在电脑前 吹着电扇 提笔写下这篇 职业规划 IT 方向 如果你是应届生 或者准备转行 IT 我想以我的个人经验

    2026年3月20日
    2
  • android图片资源加密,Android平台图像文件加密

    android图片资源加密,Android平台图像文件加密传统计算机平台下的图像加密技术已经得到了广泛的研究和应用,但移动平台受限于当前的硬件架构,无法直接继承传统平台的安全性技术。针时智能手机等移动平台中的图像信息安全问题,提出了一种基于Android移动平台的图像加密方案。一、图像加密技术1、传统图像加密技术分析传统的图像加密技术主要基于现代密码体制。通常将图像像素信息看作一维数据流,在密钥的控制下,利用加密算法(常用加密算法如EDS、AES、RC6…

    2022年5月17日
    47
  • oracle 字符串转数组「建议收藏」

    SELECTdistinctREGEXP_SUBSTR(t.llbm1,‘[^;]+’,1,LEVEL,‘i’)ASSTRFROMuser_nbgzlldt,cpcshtinsswheret.shtinsid=s.shtinsidands.wfid=35connectbylevel<=(regexp_count(t.llbm1,’;’)+1)

    2022年4月14日
    87
  • 使用 data-* 属性来嵌入自定义数据:

    使用 data-* 属性来嵌入自定义数据:

    2021年10月31日
    50
  • JavaScript 正则表达式全面总结

    JavaScript 正则表达式全面总结如果您发现错误,请一定要告诉我,拯救一个辣鸡(但很帅)的少年就靠您了!本文适合有JavaScript基础&&面向搜索引擎书写正则的人群。正则表达式是用于匹配字符串中字符组合

    2022年7月3日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号