- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* *
通用定时器输入捕获
通用定时器作为输入捕获的使用。我们用 TIM5 的通道 1( PA0 )来做输入捕获,捕获 PA0 上高
电平的脉宽(用 KEY_UP 按键输入高电平) ,通过 串口来打印高电平脉宽时间 。
输入捕获模式可以用来 测量脉冲宽度或者测量频率 。 我们以测量脉宽为例,用一个简图来说明
输入捕获的原理:
如图所示, 就是输入捕获测量高电平脉宽的原理,
假定 定时器工作在向上计数模式
,图中 t1~t2
时间,就是我们需要测量的高电平时间。测量方法如下:
首先设置 定时器通道
x 为上升沿捕获 ,
这样, t1
时刻,就会捕获到当前的
CNT 值,然后立即清零 CNT ,并设置 通道 x 为下降沿捕获 ,
这样到 t2
时刻,又会发生捕获事件,得到此时的
CNT 值,记为 CCRx2 。这样,根据定时器的
计数频率,我们就可以算出
t1~t2
的时间,从而得到高电平脉宽。在t1~t2
之间,可能产生 N
次定时器溢出,这就要求我们对定时器溢出,做处理,防止高电平太长,导致数据不准确。如图
所示, t1~t2 之间, CNT 计数的次数等于: N*ARR+CCRx2 ,有了这个计数次数,再乘以
CNT
的计数周期,即可得到 t2-t1
的时间长度,即高电平持续时间。
STM32F4
的定时器,除了
TIM6
和 TIM7 ,其他定时器都有输入捕获功能。
STM32F4
的输入
捕获,简单的说就是通过检测
TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿
/ 下
降沿)的时候,将当前定时器的值(
TIMx_CNT
)存放到对应的通道的捕获
/ 比较寄存器
(TIMx_CCRx )里面,完成一次捕获。同时还可以配置捕获时是否触发中断
/DMA
等。这里我
们用 TIM5_CH1 来捕获高电平脉宽。
* *
=======================================================
============================
捕获 / 比较通道(例如:通道 1 输入阶段)
=======================================================
============================
接下来介绍我们需要用到的一些寄存器配置,需要用到的寄存器: TIMx_ARR 、 TIMx_PSC 、
TIMx_CCMR1 、 TIMx_CCER 、 TIMx_DIER 、 TIMx_CR1 、 TIMx_CCR1 ( 这里的 x=5) 。
首先 TIMx_ARR 和 TIMx_PSC ,这两个寄存器用来设自动重装载值和 TIMx 的时钟分频。
-----------------------------------------------------------------------------------------------
----------------------------------------
捕获 / 比较模式寄存器 1: TIMx_CCMR1 ,这个寄存器在输入捕获的时候,非常有用:
TIMx 捕获 / 比较模式寄存器 1 (TIMx_CCMR1)
TIMx capture/compare mode register 1 偏移地址: 0x18 复位值: 0x0000
当在输入捕获模式下使用的时候, 对应图的第二行描述, 从图中可以看出, TIMx_CCMR1 是针
对 2 个通道的配置,低八位 [7 :0] 用于捕获 / 比较通道 1 的控制,而高八位 [15 :8] 则用于捕获 /
比较通道 2 的控制,因为 TIMx 还有 CCMR2 这个寄存器,所以可以知道 CCMR2 是用来控制
* *
通道 3 和通道 4 (详见《 STM32F4xx 中文参考手册》 435 页, 15.4.8 节)。这里我们用到的是
TIM5 的捕获 / 比较通道 1 ,我们重点介绍 TIMx_CCMR1 的 [7:0] 位(其高 8 位配置类似) ,
TIMx_CCMR1 的 [7:0] 位详细描述见图所示:
位 7:4 IC1F :输入捕获 1 滤波器 (Input capture 1 filter)
此位域可定义 TI1
输入的采样频率和适用于
TI1 的数字滤波器带宽。数字滤波器由事件计数器组成,每
N
个事件才视为一个有效边沿:
0000
:无滤波器,按 f DTS 频率进行采样
1000
: fSAMPLING =f DTS /8 , N=6
0001
: fSAMPLING
=f CK_INT ,N=2
1001
: fSA
文档评论(0)