百度文库:https://wenku.baidu.com/view/99d39413f78a6529647d5344.html

STM32关于使用定时器触发ADC转换的解决办法和详细说明

本人在使用STM32上的TIM2_CC2触发ADC转换的时候,发现始终调不出来,在网上找到了一些有价值的参考信息,然后在不懈的寻根究底下,终于找到问题的原因,废话少说,进入正题: 以STM32 ADC的常规通道为例(注入通道类似):

如上图,STM32 ADC的常规通道可以由以上6个信号触发任何一个,我们以使用TIM2_CH2触发ADC1,独立模式,每次仅测一条通道,则ADC的配置如下:(以下代码使用STM32固件库V3.5)

上图中红蓝两个框的中间部分,顶上是TIM2的自动重装寄存器和计数器寄存器,下面4个Capture/compare x register是TIM2_CCRx寄存器

要使用TIM2的CC2来触发ADC,看懂这个图是关键。 
首先要明确,这个图的红框部分和蓝框部分,是不会同时工作的,红框是配置为输入捕捉模式才能生效,蓝框是配置为输出比较模式才能生效,通过配置TIM2_CCMR1_CC2S来控制TIM2_CC2究竟是处于哪种模式(CC2S=0为比较输出,>0为输入捕捉),请注意:这里蓝框的其中一个输出是TIMx_CH2,而TIM2_CH2又是ADC规则通道的触发源,也就是说如果要触发ADC,则需要每次比较匹配时,在TIM2_CH2上产生一次上升沿。

那么我们首先需要操作蓝框内的最左边部分也就是OC2REF,要使比较匹配时发生一次上升沿,(以定时器向上计数为例,)就需要在TIM2_CNT<TIM2_CCR2时,通道2为低电平,TIM2_CNT>=TIM2_CCR2时,通道2为高电平。 
从参考手册定时器一章4.7节的CCMR1寄存器中的0C2M[2:0]的介绍可以看出来,只有在PWM模式才能满足上面所说的条件,任何单纯的冻结、配置OC2REF为高或者为低、强制OC2REF为高或者为低,都无法满足要求,不少同学就是死在这个上面,以为是配置TIMING模式,实际上这样根本无法改变OC2REF的电平,就无从触发ADC了。 
CCMR1_CCxS(x为1、2、3、4,决定是哪个通道)是选择为捕捉输入还是比较输出,这里我们需要配置为输出。 以上两段配置程序,可以以100ms的周期驱动AD转换一次,不再需要使用TIM和ADC中断资源。

总结:想要使用STM32的定时器触发ADC,必须将定时器配置为比较输出PWM模式,并且一定要注意TIMx_CHx输出上升沿才出发,若是在比较匹配的瞬时产生的不是上升沿而是下降沿,那么就不一定是在比较匹配的瞬间触发ADC了,特别是在类似于电机控制的应用中要注意这一点

ADC配置成定时器触发的启发的更多相关文章

  1. STM32定时器触发ADC多通道连续采样,DMA缓存结果

    STM32的ADC使用非常灵活,采样触发方面:既支持软件触发,定时器或其他硬件电路自动触发,也支持转换完成后自动触发下一通道/轮转换.转换结果存储方面:既支持软件读取和转存,也支持DMA自动存储转换结 ...

  2. 【STM32H7教程】第60章 STM32H7的DAC应用之定时器触发实现DMA方式双通道波形

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第60章       STM32H7的DAC应用之定时器触发实 ...

  3. 使用spring配置quartz定时器

    quartz是石英钟的意思,所以用这个名字来做定时器的框架名称再适合不过.一年前做项目的时候有用过这个框架,当时没有整理,今天刚好新的商城系统也需要定时器.想要达到的效果是:每天的固定时间,比如凌晨3 ...

  4. NXP LPC 状态可配置的定时器(SCT)

    状态可配置的定时器(SCT) 前言正在申请专利的状态可配置的定时器(SCT),是一个复杂的,但易于配置的定时器,它提供前所未有的灵活性,使工程师们在未来证明他们的设计,并减少进入市场的时间.在其最简单 ...

  5. 把rocksdb配置成leveldb

    将rocksdb配置成leveldb 1.配置方法 配置方式有三种: 第一种适合进行性能测试对比:是以参数形式在运行db_bench或ycsb-c的时候以参数形式将rocksdb将其配置成leveld ...

  6. 网站开启https后加密协议始终是TLS1.0如何配置成TLS1.2?

    p { margin-bottom: 0.1in; line-height: 120% } 网站开启https后加密协议始终是TLS1.0如何配置成TLS1.2? 要在服务器上开启 TLSv1.,通常 ...

  7. PLL输出怎么不能配置成我想要的时钟

    如下图,我的clk_out7想配置成160M,十几输出变为了150M

  8. Windows Server 2008R2配置MySQL Cluster并将管理节点和数据节点配置成windows服务

    说明:将mysql的管理节点和数据节点配置成windows服务是为了防止有人手误关闭管理节点或数据节点的dos命令窗口,管理节点或数据节点的命令窗口误关闭可能会造成mysql某台或某几台mysql不能 ...

  9. 将VIM配置成强大的IDE(二)

    将VIM配置成强大的IDE(二) 前面我们已经安装好了vundle这一款强大的插件管理工具. 下面,当然是配置我们需要的插件了. 在VIM下面通过命令 help vundle 我们可以知道,VUNDL ...

随机推荐

  1. 图->连通性->关节点和重连通分量

    文字描述 相关定义:假若在删去顶点v以及和v相关联的各边之后,将图的一个连通分量分割成两个或两个以上的连通分量,则称顶点v为该图的一个关节点.一个没有关节点的连通图称为重连通图. 在重连通图上,任意一 ...

  2. Windows10远程桌面Ubuntu16.04

    一.Ubuntu16.04端软件安装(管理员权限) 1.安装xrdp sudo apt-get install xrdp 2.安装vnc4server sudo apt-get install vnc ...

  3. Python递归函数介绍

    一.递归的定义 1.什么是递归:在一个函数里在调用这个函数本身 2.最大递归层数做了一个限制:997,但是也可以自己限制 # 验证 997 def foo(n): print(n) n+=1 foo( ...

  4. iOS 如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用?

    如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用? 1. - (void)pushViewController:(U ...

  5. 15.3-uC/OS-III资源管理(多值信号量)

    多值信号量是 uC/OS 操作系统的一个内核对象, 主要用于标志事件的发生和共享资源管理. 1.如果想要使用多值信号量,就必须事先使能多值信号量. 多值信号量的使能位于“os_cfg.h”. 2.OS ...

  6. python练习题-day11

    1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件), 要求:登录成功一次,后续的函数都无需再输入用户名和密码 flag=False def wrapper(fun): def inn ...

  7. python 对反斜杠的处理问题

    首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Wi ...

  8. cocos2d-x JS 富文本

    var str1 = "兑换成功后,系统会生成“";var str2 = "红包兑换码";var str3 = "”,请复制该兑换码,并粘贴在&quo ...

  9. CentOS 7 搭建CA认证中心实现https取证

    CA认证中心简述 CA :CertificateAuthority的缩写,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书 功能:证书发放.证书更新.证书撤销和证书验证. 作用:身份认证, ...

  10. Java代码走查具体考察点

    代码走查具体考察点 一.参数检验 公共方法都要做参数的校验,参数校验不通过,需要明确抛出异常或对应响应码. 在接口中也明确使用验证注解修饰参数和返回值,作为一种协议要求调用方按注解约束传参,返回值验证 ...