STM32F407通常定时器输入捕获.docx

上传人:b****3 文档编号:1014366 上传时间:2022-10-15 格式:DOCX 页数:23 大小:59.56KB
下载 相关 举报
STM32F407通常定时器输入捕获.docx_第1页
第1页 / 共23页
STM32F407通常定时器输入捕获.docx_第2页
第2页 / 共23页
STM32F407通常定时器输入捕获.docx_第3页
第3页 / 共23页
STM32F407通常定时器输入捕获.docx_第4页
第4页 / 共23页
STM32F407通常定时器输入捕获.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

STM32F407通常定时器输入捕获.docx

《STM32F407通常定时器输入捕获.docx》由会员分享,可在线阅读,更多相关《STM32F407通常定时器输入捕获.docx(23页珍藏版)》请在冰豆网上搜索。

STM32F407通常定时器输入捕获.docx

STM32F407通常定时器输入捕获

通用定时器输入捕获

通用定时器作为输入捕获的使用。

我们用TIM5的通道1(PA0)来做输入捕获,捕获PA0上高

电平的脉宽(用KEY_UP按键输入高电平),通过串口来打印高电平脉宽时间

输入捕获模式可以用来测量脉冲宽度或者测量频率

我们以测量脉宽为例,用一个简图来说明

 

输入捕获的原理:

t

,图中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等。

这里我

们用TIM5CH1来捕获咼电平脉宽。

OCZC£|002*426

OC2PE1OC2FE

ccasii-oji

ocice|

OC1M[20|

aC1P£|0ClFE

卸F]

icspsqro]

IC1FI3;0]

icipsqio]

rw1曲1rw1側

rw1rw

rw1rW

rw1

rw1rwrw

fw1rw

rw1M

5

2

0

了勺,

当在输入捕获模式下使用的时候,对应图的第二行描述,从图中可以看岀,

15141112111P9

TIMxCCMR1是针

接下来介绍我们需要用到的一些寄存器配置,需要用到的寄存器:

TIMxARR

、TIMxPSC、

TIMxCCMR1、TIMxCCER、TIMxDIER、TIMxCR1、TIMxCCR1

(这里的x=5)。

首先TIMx_ARR和TIMx_PSC,这两个寄存器用来设自动重装载值和

TIMx的时钟分频。

捕获/比较模式寄存器1:

TIMx_CCMR1,这个寄存器在输入捕获的时候,

非常有用:

TIMx捕获/比较模式寄存器1(TIMx_CCMR1)

TIMxcapture/comparemoderegister1

偏移地址:

0x18复位值:

0x0000

[15:

8]则用于捕获/

CCMR2是用来控制

对2个通道的配置,低八位[7:

0]用于捕获/比较通道1的控制,而高八位比较通道2的控制,因为TIMx还有CCMR2这个寄存器,所以可以知道

通道

3和通道4(详见《STM32F4XX中文参考手册》435页,1548节)。

这里我们用到的是

TIM5

的捕获/比较通道1,我们重点介绍TIMx_CCMR1的[7:

0]位(其高8位配置类似)

TIMx_CCMR1的[7:

0]位详细描述见图所示:

位7:

4IC1F:

输入捕获1滤波器(Inputcapture1filter)

此位域可定义TI1输入的采样频率和适用于

个事件才视为一个有效边沿:

TI1

的数字滤波器带宽。

数字滤波器由事件计数器组成,每N

0000:

无滤波器,

按fDTS频率进行采样

1000:

fSAMPLING

=fdts/8,

N=6

0001:

fSAMPLING

=fCK_INT,

N=2

1001:

fSAMPLING

=fDTS/8,

N=8

0010:

fSAMPLING

=fCK_INT,

N=4

1010:

fSAMPLING

=fDTS/16,

N=5

0011:

fSAMPLING

=fCK_INT,

N=8

1011:

fSAMPLING

=fdts/16,

N=6

0100:

fSAMPLING

=fdts/2,

N=6

1100:

fSAMPLING

=fdts/16,

N=8

0101:

fSAMPLING

=fDTS/2,

N=8

1101:

fSAMPLING

=fdts/32,

N=5

0110:

fSAMPLING

=fDTS/4,

N=6

1110:

fSAMPLING

=fdts/32,

N=6

0111:

fSAMPLING

=fdts/4,

N=8

1111:

fSAMPLING

=fdts/32,

N=8

注意:

在当前硅版本中,当

ICxF[3:

0]=1、2

或3时,将用CK_INT代替公式中的fDTS。

□_

TI1F

ffilS

输入捕获1滤波器IC1F[3:

0],这个用来设置输入采样

频率和数字滤波器长度。

其中,fCK_INT是定时器的输入

IIGF[3£]

TIIWk^CCMRI

频率(TIMxCLK),一般为84Mhz/168Mhz(看该定

时器在哪个总线上),而fDTS则是根据TIMx_CR1的

CKD[1:

0]的设置来确定的,如果CKD[1:

0]设置为00,那么fDTSnfCKJNT。

N值就是滤波长度,举个简单的例

子:

假设IC1F[3:

0]=0011,并设置IC1映射到通道1上,且为上升沿触发,那么在捕获到上升沿的时候,再

以fCK_INT的频率,连续采样到8次通道1的电平,如果

都是高电平,

则说明却是一个有效的触发,就会触发输

入捕获中断

(如果开启了的话)。

这样可以滤除那些高电

平脉宽低于

8个采样周期的脉冲信号,从而达到滤波的

效果。

这里,我们不做滤波处理,所以设置

IC1F[3:

0]=0000,只要采集到上升沿,就触发捕获。

位3:

2IC1PSC:

输入捕获1预分频器(Inputcapture1

IC1

/1I./&

prescaler)

此位域定义CC1输入(IC1)的预分频比。

只要CC1E=0(TIMx_CCER寄存器),预分频器便立即复位。

00:

无预分频器,捕获输入上每检测到一个边沿便执行捕获

01:

每发生

个事件便执行一次捕获

|cctsi1:

o]lICPSIID]

10:

每发生

11:

每发生

个事件便执行一次捕获个事件便执行一次捕获

TIMj(_CCWK1T|Mx_CCER

输入捕获1预分频器IC1PSC[1:

0],我们是1次边沿就

触发1次捕获,所以选择00。

TI1FP1

10

位1:

0CC1S:

捕获/比较1选择(Capture/Compare1

selection)

此位域定义通道方向(输入

/输出)以及所使用的输入。

IRC

i:

舗鼻回廈

11

00:

CC1

通道配置为输出

TDUUC£lVRl

01:

CC1

10:

CC1

11:

CC1

通道配置为输入,

通道配置为输入,

通道配置为输入,

IC1

IC1

IC1

映射到

映射到

映射到

TI1上

TI2上

TRC上。

此模式仅在

通过TS位(TIMx_SMCR寄存器)选择内部触发输入时有效

注意:

仅当通道关闭时(TIMx_CCER中的CC1E=0),才可向CC1S位写入数据。

其中CC1S[1:

0],这两个位用于CCR1的通道配置,这

里我们设置IC1S[1:

0]=01,也就是配置IC1映射在TI1上。

TIMx捕获/比较使能寄存器(TIMx_CCER)

CC*Np|

CC4P1CC4E

CC3P

CC3£

l5l隅

1CCZP

ccse

ocimpI

1CCniP

1CClE

阳1

rwIfw

rw

1-I

1-

fW

rw1

1*

1rw

位1CC1P:

捕获/比较1输岀极性

TII1F

TIIIF-Risin*

14131211109«

Hmfpi

ri1FFa|ihng

TIMxCCER

CC1通道配置为输出:

0:

OC1高电平有效

1:

OC1低电平有效

(Capture/Compare1outputPolarity)

CC1通道配置为输入:

CC1NP/CC1P位可针对触发或捕获操作选择TI1FP1和TI2FP1的极性。

00:

非反相/上升沿触发电路对TIxFP1上升沿敏感(在复位模式、外部时钟模式或触发模式下执行捕获或触发操作),TIxFP1未反相(在门控模式或编码器模式下执行触发操作)。

01:

反相/下降沿触发电路对TIxFP1下降沿敏感(在复位模式、外部时钟模式或触发模式下执行捕获或触发操作),TIxFP1反相(在门控模式或编码器模式下执行触发操作)。

10:

保留,不使用此配置。

11:

非反相/上升沿和下降沿均触发

电路对TlxFP1上升沿和下降沿都敏感(在复位模式、外部时钟模式或触发模式下执行捕获或触发操作)

位0CC1E:

捕获/比较1输岀使能(Capture/Compare1outputenable)

CC1通道配置为输出:

0:

关闭--OC1未激活

1:

开启—在相应输出引脚上输出0C1信号

CC1通道配置为输入:

此位决定了是否可以实际将计数器值捕获到输入捕获/比较寄存器1仃IMx_CCR1)中。

0:

禁止捕获1:

使能捕获

所以要使能输入捕获,必须设置CC1E=1,而CC1P则根据自己的需要来配置。

接下来我们再看看DMA/中断使能寄存器:

TIMx_DIER,该寄存器的各位描述见图

Is

L312

I]

ID

Q

S7

6

5T

3

2:

0

1悶1

TDf

1f询jcClDE

|fc:

nE

CrtDE1

:

Tl

1嘔1

TIE

1fT.3J|CC4:

!

c;:

rE

e:

E

1TE1

r書

TU.

rv

Tfi

】p

m

CC4IEr比許摘获f吃痰4中IT4mlemjpcftnabIti

0:

1:

尢伯购yLt牧和烷.

住3

CC3IEr允沖捕抚U;校3中團FCaptur宙GompMfE3tfitemiptenable]0.宣1神捌^?

却;:

牺.

1:

兄许捕奁此1:

牡9-浙.

注2

CC2IE:

光许朋曲比姣3;1商(Captufa/CcMTipara2ntfrrrupCftnabla]0’裂止矜掷比轨0:

-商2

1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1