前言

STM32 的ADC拥有连续扫描模式,也有间断模式,间断模式较扫描模式需要更多的触发事件才能完成所有的通道转换操作,在实际工程应用中,可以利用间断模式实现一些特殊应用。关于间断模式,在STM32的数据手册中有如下描述:

本节将给大家展示一下如保在STM32中使用双ADC的间断模式使用,在ADC1中开启6个通道:0,1,2,3,4,5,其中0,1,2,3,用于规划通道,其结果用DMA来读取,4,5,用作注入通道,触发源为定时器1的TRGO信号,规划组和注入组均是间断模式。

示例详解

基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。

本示例所用的最小系统板原理图:

  1. 关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:
  1. 系统时钟树

  1. 定时器配置

  1. ADC配置

​​

  1. 定时器1配置,用于产生触发源,1KHZ

  1. 引脚配置

  1. 中断配置(保持默认)

  1. 调整堆栈大:

  1. 工程代码
  1. 在main.c中加入如下代码

  1. 编译工程无错误后,调试程序:

View->Watch windows->Watch 1打开一个变量观察窗口,将变量ADC_result和InJAdc_result加入到 Watch 1 观察窗口:

修改HAL_ADCEx_InjectedConvCpltCallback函数响应操作:

再次运行,仿真查看结果:

修改HAL_ADCEx_InjectedConvCpltCallback函数响应操作:

再次运行,仿真查看结果:

分别将PA5, PA4 ,PA3, PA2, PA1, PA0 引脚接地查看结果:

Pa5 接地

Pa4 接地

Pa3 接地

Pa2 接地

Pa1 接地

Pa0 接地

可以看到输出的结果与ADC的配置是对应的,实验成功,成功用定时器1触发注入通道进行转转,并得到正确结果。通过与上一讲内容的对比,不难发现,间断模式下转换完一次后需要再次时行触发操作才会自动进入下一次转换操作。

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

文中源码资料下载,在公众号里给十三发消息:

下载|STM32进阶教程 18

关注十三公众号

STM32 进阶教程 18 – ADC间断模式相关推荐

  1. STM32 进阶教程 17 - ADC注入通道

    前言 STM32 的ADC的一个强大功能是支持触发注入功能,在103中每个ADC模块支持4个注入通道,每个注入通道具有独立的结果突存器,注入通道具有较规划通道更高的优先级,在实际工程应用中,注入通道更 ...

  2. STM32 进阶教程 16 - ADC1与ADC2同步采样

    前言 STM32中在有2个或以上ADC模块的产品中,可以使用双ADC模式.在双ADC模式里,根据ADC1_CR1寄存器中DUALMOD[2:0]位所选的模式,转换的启动可以是ADC1主和ADC2从的交 ...

  3. STM32 进阶教程 12 - M4的硬件乘法器使用

    前言 Cortex-M4支持硬件浮点运算单元(有些厂商直接说成DSP模块),本节将给大家介绍STM32F407芯片中硬件浮点运算单元中的使用及带来的性能对比. 示例详解 基于硬件平台: 正点源子的st ...

  4. STM32 进阶教程 2 - micropython 使用

    前言 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.具有如下特点: 1.易于学习:Python有相 ...

  5. STM32 进阶教程 1 - micropython 移植

    前言 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.具有如下特点: 1.易于学习:Python有相 ...

  6. STM32 电机教程 18 - MC Workbench生成工程代码的电机调试

    前言 磁场定向控制又称矢量控制(FOC), 本质上为控制定子电流的幅度和相位,使之产生的磁场和转子的磁场正交,以产生最大的扭矩. PMSM的磁场定向控制框图如下图所示: 上一讲成功实现了基于NUCLE ...

  7. STM32 进阶教程 20 - 串口+DMA实现OneWire总线

    前言 One-wire总线使用一根并联总线完成对于多个设备的访问,通过上拉的OD门实现多设备的读写操作,通过ID区别设备,通过CRC5完成数据校验.常见对于one-wire总线的操作代码主要使用包含基 ...

  8. STM32 进阶教程 19 - IQmath数学库的使用

    前言 STM32 M3 系列是不带浮点运算单元的,小数运算都是采用定点转浮点试式实现的,本节给大家介绍一个很好用的定点转浮点数学运算库,IQmath是德州仪器 (TI) 的一个高度优化的高精度数学函数 ...

  9. STM32 进阶教程 15 - 串口DMA收发

    前言 串口操作相信大家一定很熟悉,如果你已经会串口的收发数据,并可以灵活使用轮询及中断方式对串口进行数据收发,那么恭喜你,学完本节内容后,也将可以学会串口的更高级操作方式,DMA方式,DMA操作串口可 ...

最新文章

  1. ansible代码发布系统
  2. Ubuntu Server 之Apache2 虚拟主机配置指南(个人实践解读)
  3. groovy 字符串截取最后一个_Python入门高级教程--Python 字符串
  4. STM32F7xx —— QSPI
  5. python对列表的删除,挺有意思的东西
  6. 不要轻易碰我,不然我就知道你有多软了 | Science Robotics
  7. monty python读音-PYTHON – 让quot;Monty 语言”进入自动化行业:第 1 部分
  8. eclipse 远程调试mapreduce
  9. i386和x86-64区别通俗易懂版本(转)
  10. webapp开发框架
  11. android半透明引导页
  12. 微信小程序选项卡功能
  13. 修改ua html5,html5中bootstrap表单样式文件html,兼容多种UA终端
  14. 三只松鼠商品评论分析
  15. c++并发编程(concurrency)----线程管理
  16. Linux kail环境下安装pyrit 问题详解
  17. tomcat官网下载任意版本包
  18. 苹果CMS根据有无播放组输出不同的内容
  19. mac如何强制退出程序?强制退出程序的六种方法
  20. CVPR无监督/自监督学习(Un/Self-supervised Learning)方向论文学习(附摘要)

热门文章

  1. python之while循环用法举例,break与continue的区别,格式化输出及运算符
  2. Mui Webview下来刷新上拉加载实现
  3. python+selenium+chrome实现自动登录百度
  4. 多项式输出(NOIP2009 普及组第一题)
  5. 总结一些关于操作数据库是sql语句还是存储过程问题
  6. [转]oracle中查询指定行数的记录
  7. sublime text 2用package control安装插件时显示成功安装但实际没装上的问题
  8. 自已动手写控件 --- 我第一次学习写自定义控件
  9. python中dict和list排序
  10. VC2019 使用GDI+ 显示PNG图片