对于STM32,在使用ADC的时候需要配置几个参数。

  1. 第一个参数是ADC_Mode,这里设置为独立模式:
 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

在这个模式下,双ADC不能同步,每个ADC接口独立工作。所以如果不需要ADC同步或者只是用了一个ADC的时候,就应该设成独立模式了。

  1. 第二个参数是ADC_ScanConvMode,这里设置为DISABLE。
 ADC_InitStructure.ADC_ScanConvMode = DISABLE;

如果只是用了一个通道的话,DISABLE就可以了,如果使用了多个通道的话,则必须将其设置为ENABLE。

  1. 第三个参数是ADC_ContinuousConvMode,这里设置为ENABLE,即连续转换。如果设置为DISABLE,则是单次转换。两者的区别在于连续转换直到所有的数据转换完成后才停止转换,而单次转换则只转换一次数据就停止,要再次触发转换才可以。所以如果需要一次性采集1024个数据或者更多,则采用连续转换。

  2. 第四个参数是ADC_ExternalTrigConv,即选择外部触发模式。这里只讲三种:

  • 第一种是最简单的软件触发,参数为ADC_ExternalTrigConv_None。设置好后还要记得调用库函数:
 ADC_SoftwareStartConvCmd(ADC1, ENABLE);

这样触发才会启动。

  • 第二种是定时器通道输出触发。共有这几种:
ADC_ExternalTrigConv_T1_CC1、
ADC_ExternalTrigConv_T1_CC2、
ADC_ExternalTrigConv_T2_CC2、
ADC_ExternalTrigConv_T3_T 、
ADC_ExternalTrigConv_T4_CC4 、

定时器输出触发比较麻烦,还需要设置相应的定时器。ADC_ExternalTrigConv_T2_CC2触发为例设置相应的定时器:

void TIM2_Configuration(void){TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;TIM_OCInitTypeDef         TIM_OCInitStructure;TIM_TimeBaseStructure.TIM_Prescaler = 4;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseStructure.TIM_Period = 0XFF;TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse = 0X7F;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;        TIM_OC2Init(TIM2, &TIM_OCInitStructure);TIM_Cmd(TIM2, ENABLE);TIM_CtrlPWMOutputs(TIM2, ENABLE);
}

这样设置之后就可以用定时器2的输出触发了,至于触发的周期,设置TIM2的时间即可。这里不再赘述。

  • 第三种是外部引脚触发,对于规则通道,选择EXTI线11和TIM8_TRGO作为外部触发事件;而注入通道组则选择EXTI线15和TIM8_CC4作为外部触发事件。
  1. 第五个参数是ADC_DataAlign,这里设置为ADC_DataAlign_Right右对齐方式。建议采用右对齐方式,因为这样处理数据会比较方便。当然如果要从高位开始传输数据,那么采用左对齐优势就明显了。
  2. 第六个参数是ADC_NbrOfChannel,顾名思义:通道的数量。要是到多个通道采集数据的话就得设置一下这个参数。此外在规则通道组的配置函数中也许将各个通道的顺序定义一下,如:
      ADC_RegularChannelConfig(ADC1,ADC_Channel_13,1,ADC_SampleTime_13Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_14,2,ADC_SampleTime_13Cycles5);

多通道数据传输时有一点还要注意:若一个数组为ADC_ValueTab[4],且设置了两个通道:通道1和通道2,则转换结束后,ADC_ValueTab[0]ADC_ValueTab[2]存储的是通道1的数据,而ADC_ValueTab[1]ADC_ValueTab[3]存储的是通道2的数据。如果数组容量大则依次类推

STM32之ADC配置,ADC_Mode模式理解相关推荐

  1. STM32用cube配置FATFS模式下SPI读写SD卡

    要求:掌握SD卡协议原理,用STM32F103 完成对SD卡的数据读取(FAT文件模式) 目录 一.SD卡与FATS 1.SD卡 2.FATFS文件系统 二.工程实现 1.编译运行 2.接线 3.初始 ...

  2. 【CubeMX配置STM32的ADC】

    CubeMX配置STM32的ADC 包含阻塞式和非阻塞式以及多通道ADC 一.CubeMX配置STM32 1.单通道ADC 单通道的配置比较简单,需要注意的是需要中断的使能,因为在使用非阻塞式的函数时 ...

  3. FPGA的spi flash配置-配置模式理解

    FPGA的spi flash配置-配置模式理解 起因 现在在做的FPGA工程是基于以前的工程,其中flash配置啊什么的都没有进行过修改,之前是采用的spi x1的模式,现在新的数字版改为了spi x ...

  4. STM32之ADC的学习心得(std+HAL)

    STM32的ADC配置问题 问题介绍 最近要使用STM32F103C8T6来做个数字万用表,于是开始学习STM32,要用到32内部的12位ADC 等于是刚刚接触STM32,一切从零开始,现在分享下如何 ...

  5. STM-32:ADC模数转换器—ADC单通道转换/ADC多通道转换

    目录 一.ADC 模数转换器 1.1ADC简介 1.2 逐次逼近型ADC工作原理 1.3STM32中的ADC基本结构 1.4STM32中ADC的输入通道 1.5STM32中的ADC的四种转换模式 1. ...

  6. STM32理论 —— ADC、存储、定时器、时钟、中断

    文章目录 1. ADC 1.1 ADC相关寄存器 1.1.1 ADC 控制寄存器1(ADC_CR1) 1.1.2 ADC 控制寄存器2(ADC_CR2) 1.1.3 ADC 采样时间寄存器(ADC_S ...

  7. 低门槛DIY示波器,CH32示波器,完全兼容STM32,ADC+DMA+TIM+USB,仅需一块最小系统板

    文章目录 前言 一.先看成果 二.使用步骤 1 运行软件 1.1 Windows用户直接运行打包好的软件 1.2 安装Python环境运行源代码(入坑) 2 选择端口 三.源码分析 1 程序总体流程图 ...

  8. STM32之ADC+步骤小技巧(英文)

    神通广大的各位互联网的网友们.大家早上中午晚上好好好.今早起来很准时的收到了两条10086的扣月租的信息.心痛不已.怀着这心情.又开始了STM32的研究.早上做了计算机控制的PID实验,又让我想起了飞 ...

  9. STM32之ADC实例(基于DMA方式)

    出处:https://blog.csdn.net/zouleideboke/article/details/75112224?locationNum=9&fps=1 ADC简介: ADC(An ...

最新文章

  1. Openstack组件实现原理 — Nova 体系结构
  2. iOS-NSData与NSDictionary的互相转换
  3. Mongodb千万级数据在python下的综合压力测试及应用探讨
  4. 在日常维护管理中对MySQL 日志的需求
  5. python模型训练框架_Pytorch-Transformers 1.0发布,支持六个预训练框架,含27个预训练模型...
  6. python数据导出excel_【python Excel】如何使用python将大量数据导出到Excel中的小技巧之一...
  7. ServletContext的应用
  8. 程序执行的过程分析--【sky原创】
  9. JAVA 基础8-面向对象3
  10. 计算机歌曲带歌词,mp3上怎么看歌词?我的机子说是可以显示的啊
  11. 通过追女孩时的常见对话来看你会不会聊天
  12. win10添加打印机失败,无法正常使用打印机的解决办法
  13. 如何修改Julia语言环境的安装包默认安装文件夹的位置
  14. windows 下使用nginx 实现负载均衡
  15. R语言:无法精确计算带连结的p值
  16. Apache htaccess 重写如果文件存在!
  17. 【Mysql】----基础练习
  18. 录音文件转换成文字的方法
  19. JSP基础教程:熟悉JSP服务器
  20. go文件上传断点续传功能

热门文章

  1. linux搭建vds超级节点,VDS | 超级节点搭建流程
  2. 利用EMCP物联网云平台通过网口远程监控S7-200 Smart PLC云组态
  3. 一文了解 Java 中 so 文件的加载原理
  4. c语言基础-变量(字符型)
  5. 房地产中介管理信息系统演示
  6. Java调用身份证读取器(中控)读取信息并转换为Json,并拆分地址(正则)
  7. D80说明书翻译PDF下载
  8. 拼多多商家引流方法:新手一定要知道的几个引流方法!拼多多补单软件
  9. WinRAR 无法关联zip、rar等文件
  10. [Unity workflows] Unity 5.6.1f1 与 Docker 和 Bitrise 的持续集成