STM32 进阶教程 18 – ADC间断模式_hal_adc_convcpltcallback-程序员宅基地

技术标签: ADC  STM32  ADC间断模式  

前言

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编译代码。

 

https://qqadapt.qpic.cn/txdocpic/0/ad280c7f41fa67a458971858b186dee2/0?_type=png

 

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

https://qqadapt.qpic.cn/txdocpic/0/1f1e16f872cc1c38528523590d91ded9/0?_type=png

 

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

https://qqadapt.qpic.cn/txdocpic/0/6cd075954a608fdcd14860e60efd0ace/0?_type=png

  1. 定时器配置

https://qqadapt.qpic.cn/txdocpic/0/2fa55ed2488ba9dc1b964920e0ad854d/0?_type=png

  1. ADC配置

​​

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

  1. 引脚配置

 

https://qqadapt.qpic.cn/txdocpic/0/e336a09f3b1aa1967eddfdbffde7db39/0?_type=png

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

  1. 调整堆栈大:

https://qqadapt.qpic.cn/txdocpic/0/f11359bcd6ae249fc87bbb7ceaea91f6/0?_type=png

 

  1. 工程代码

 

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

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

https://qqadapt.qpic.cn/txdocpic/0/154d710689406f6c5646e29309140161/0?_type=png

 

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

https://qqadapt.qpic.cn/txdocpic/0/33e93a3ffa666674ea3a47189ca6fa34/0?_type=png

 

关注十三公众号

https://qqadapt.qpic.cn/txdocpic/0/809b788f69f85d78eb48eea2664d8f43/0?_type=jpeg

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhanglifu3601881/article/details/97614802

智能推荐

php 取数组最后一个键,php - 如何获取数组中的最后一个键?-程序员宅基地

文章浏览阅读1.9k次。14个解决方案556 votes解决方案是使用reset()和reset()(引用)的组合:reset()将数组的内部指针前进到最后一个元素,并返回其值。reset()返回当前数组位置的索引元素。因此,像这样的代码的一部分应该做的伎俩:$array = array('first' => 123,'second' => 456,'last' => 789,);end($array)..._php 数组最后的键

python调用sql数据库_Python操作MSSQL-程序员宅基地

文章浏览阅读328次。Python 操作SQLServer 需要使用 pymssql 模块,使用pip install pymssql安装。然后import该包即可。安装成功后,使用如下语句和 MSSql 数据库交互。下载 FreeTDS,地址:www.freetds.org下载后解压: tar -zxvf XXX.tar.gz然后执行./configure --prefix=/usr/local/freetds --..._cursor_2.fetchall()

android 分享本地图片,Android一键分享——原生分享图片-程序员宅基地

文章浏览阅读975次。有些东西还是记下来比较好,记记随笔,欢迎批评建议。Android分享的实现大多可以用第三方的分享,友盟、ShareSDK等。这里介绍的是Android系统自带的分享。调用原生的分享时,系统会调出手机中所有具有分享功能的APP,当然你也可以用代码进行筛选,分享界面也是根据系统的风格。~注意:如果是分享本地图片,获取图片地址拼成uri即可;若不是本地图片,分享需先将图片保存到本地并获取uri,若直接分..._安卓通过图片url实现图片分享

JDK各个版本的新特性_pre-built jdk-程序员宅基地

文章浏览阅读1k次。以下介绍一下JDK1.5版本到JDK1.7版本的特性及JDK1.8主要部分特性。仅供参考。JDK1.5新特性 1:自动装箱与拆箱:自动装箱:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。自动拆箱:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。自动装箱,只需将该值赋给一个类型包装器引用,java会..._pre-built jdk

mysql获取最后4位是0的数据,MySQL与JAVA错误。成功发送到服务器的最后一个数据包是0毫秒前...-程序员宅基地

文章浏览阅读497次。I have read about this exception a lot, but I can't solve my.Mysql server is working.I can connect to it from NetBeans, but I can't connect to it from java code.Exception in thread "main" com.mysql.jd..._成功发送到服务器的ast数据包是在0毫秒前。驱动程序没有从服务器接收到任何数据包

Oracle安装/配置/入门 » 新手入门必读--常见问题指南-程序员宅基地

文章浏览阅读235次。----入门篇---- 入门知识 http://www.cnoug.org/viewthread.php?tid=17449&h=1 Oracle 的入门心得-->强烈推荐 http://w..._oracle 一个新org应如何配置

随便推点

CSDN积分获取和使用规则-程序员宅基地

文章浏览阅读680次。如何获得CSDN下载积分项目名称 获得细则 积分数量普通资源被下载 100分封顶,下载自己资源无积分 资源分*下载量零分资源被下载 100分封顶,零积分更易获得下载 1分*下载量C币兑换 1C币=2下载积分 由兑换C币多少决定举报资源被确认 举报资源且情况属实 20积分论坛可用分兑换 可用分兑换5:1 每天最多兑..._csdn积分

Mac 解决 Font family [“sans-serif”] not found , Glyph xxx missing from current font 的问题_findfont: generic family 'sans-serif' not found be-程序员宅基地

文章浏览阅读2.3k次。我是在使用python的matplotlib.pyplot画图时,想用中文作为x轴的标题,就报了上面两个错误。解决方法:1、先按照下面的方式,下载字体,并配置好2、然后前往文件夹~/.matplotlib/ ,删除该文件夹里的东西然后就可以了..._findfont: generic family 'sans-serif' not found because none of the followin

Android 序列化和反序列化_android map<string, integer>序列化和反序列化-程序员宅基地

文章浏览阅读233次。序列化和反序列化的概念一、序列化和反序列化的概念把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。  对象的序列化主要有两种用途:  1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;  2) 在网络上传送对象的字节序列。  在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理_android map序列化和反序列化

人工智能生成舞蹈 | Mixlab交叉学科-程序员宅基地

文章浏览阅读2.9k次。NVIDIA最新深度学习模型:根据音乐自动编舞AI DancingFacebook ResearchFacebook AI研究人员开发了一种系统,该系统可使机器为任何输入的音乐生成舞蹈。..._ai舞蹈生成

oracle数据库查表_Oracle数据库之Oracle数据库中查看所有表和字段以及表注释.字段注释...-程序员宅基地

文章浏览阅读409次。本文主要向大家介绍了Oracle数据库之Oracle数据库中查看所有表和字段以及表注释.字段注释,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。1、获取表:selecttable_namefromuser_tables;//当前用户拥有的表selecttable_namefromall_tables;//所有用户的表selecttable_namefrom..._oracle查询所有数据库表名、注释、大小、字段等

mysql的sql作业_SQL学习笔记四(补充-2-1)之MySQL SQL查询作业答案-程序员宅基地

文章浏览阅读146次。#1、查询所有的课程的名称以及对应的任课老师姓名SELECTcourse.cname,teacher.tnameFROMcourseINNER JOIN teacher ON course.teacher_id=teacher.tid;#2、查询学生表中男女生各有多少人SELECTgender 性别,count(1) 人数FROMstudentGROUP BYgender;#3、查询物理成绩等于1..._查询所有课程的课程名称和任课老师