




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、通用定时器输入捕获通用定时器作为输入捕获的使用。我们用TIM5的通道1 (PAO)来做输入捕获,捕获PAO上 高电平的脉宽(用KEY.UP按键输入高电平),通过串口来打印高电平脉宽时间。输入捕获模式可以用来测量脉冲宽度或者测量频率,我们以测量脉宽为例,用个简图来 说明输入捕获的原理:如图所示,就是输入捕获测量高电平脉宽的原理,假定定时器匸作在向上计数模式,图中 112时间,就是我们需要测量的高电平时间。测量方法如下:首先设置定时器通道x为上升沿 捕获,这样,tl时刻,就会捕获到当前的CNT值,然后立即清零CNT,并设置通道x为下降沿捕 获.这样到t2时刻,又会发生捕获事件,得到此时的CNT值,
2、记为CCRx2这样,根据定时器 的计数频率,我们就可以算岀tlt2的时间,从而得到高电平脉宽。在tl2之间,可能产生N 次定时器溢出,这就要求我们对定时器溢出,做处理,防止高电平太长,导致数据不准确。如图 所示,trt2之间,CNT计数的次数等于:N*ARR+CCRx2,有了这个计数次数,再乘以CNT的计 数周期,即可得到t2-tl的时间长度,即高电平持续时间。S1K32F4的定时器,除了 TIM6和TIM7,其他定时器都有输入捕获功能。STM32F1的输入捕 获,简单的说就是通过检测TIMx_CHx 的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿) 的时候,将当前定时器的值(TIMx_C
3、NT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里 面,完成次捕获。同时还可以配置捕获时是否触发中断/DMA等。这里我们用TIM5_CH1来捕获 高电平脉宽。捕获/比较通道(例如:通道1输入阶段)接下来介绍我们需要用到的些寄存器配置,需要用到的寄存器:TIMx_ARR. TIMx_PSC.TIMx_CCMRl、TIMx_CCER、TIMx_DIER、TIMx.CRl. TIMx.CCRl (这里的 x=5) 首先TIMx.ARR和TIMx.PSC,这两个寄存器用来设H动重装载值和TIMx的时钟分频。捕获/比较模式寄存器1: TIMx.CCMRl,这个寄存器在输入捕获的时候,非常有
4、用:TIJfe捕获/比较模式寄存器1 (TIMx_CCMRl)TIMx capture/compare mode register 1偏移地址:0x18 复位值:0x00001514131211109876543210OC2CE |OC2MQOOC2PE | OC2FEOC1CE|OC1M2:0)OC1PE|OC1FEIC2F3:0IC2PSC1:0 .V)IC1F3:OIC1PSC1:OKZXX1 -VJrwrwrwrwrwrwrwrwrwrwrwrwrwrwrww当在输入捕获模式下使用的时候,对应图的第二行描述,从图中可以看出,TIMx_CCMRl是针对2个通道的配置,低八位7: 0用于捕
5、获/比较通道1的控制,而高八位15: 8则用于捕 获/比较通道2的控制,因为TIMx还有CCMR2这个寄存器,所以可以知道CCMR2是用来控制通 道3和通道4 (详见JP1未反相(在 门控模式或编码器模式下执行触发操作)。0C1低电平有效 位可针对触发或捕01:反相/下降沿触发电路对TIxFP 1下降沿敏感(在复位模式、外部时钟模 式或触发模式下执行捕获或触发操作) TIxFPl反相(在门控模式或编码器模式下执行触发操作)c10:保留.不使用此配宜。11:非反相/上升沿和下降沿均触发电路对TIxFPl上升沿和下降沿都敏感(在复位模式、 外部时钟模式或傩发模式下执行捕获或触发操作)位 0 CC1
6、E:捕获/比较 /输出使能(Capture/Compare 1 output enable)CC1通道配宜为输出:0:关闭-OC1未激活1:开启在相应输出引脚上输出OC1信号CC1通道配宜为输入:此位决定了是否可以实际将il数器值捕获到输入捕获/比较寄存器1 (TIMx_CCRl)中。0:禁止捕获1:使能捕获所以要使能输入捕获,必须设置CClE=b而CC1P则根据自己的需要来配置。接下来我们再看看DMA/中断使能寄存器:TIMx.DIER,该寄存器的各位描述见图15141312 )1109876043210保见TDECC4DE |CC3DECC2DECCIDE |IDE|TIE保尿CC4IEC
7、C3IECC2IEcciie|U1E |rwrwrwrwrwrwrvnrrwrvrw位5保gb始终读为0.位4CC4IE:允许捕获儿匕较40浙(CapturCompare 4 interrupt enable) 0:禁止抽获/比较4中断:1=允许抽获/比较4中斷。位3CC3IE:允许拖获/L匕较3H新(CapturCompare 3 interrupt enable) 0:禁止摘掷比较3中断:1:允诈福获/上校3中斯位2CC2IE:允许捕获儿匕较2小新(CapturCompare 2 interrupt enable) 0:禁止循获/比较2中断:1:允诈持获/上较2中断.位1CC1IE:允许捕
8、获儿匕絞1小断(CaptureCompare 1 interrupt enable) 0;禁止洁获/叱校1中断:1;允许扬获/上较1中断。位0UIE:允许史新中酊(Update interrupt enable) 0:菇止更新中h1:允许更新中断.TIMx_ DIER寄存器各位描述我们需要用到中断来处理捕获数据,所以必须开启通道1的捕获比较中断,即CC1IE设置 为lo控制寄存器:TIMx_CRl,我们只用到了它的最低位,也就是用来使能定时器的。 控制寄存器1 (TIMx_CRl)1514131211109876543210保田CKD1:OARPECMS1:0DIROPMIRSUDISCENr
9、w rw m rw rv rw rw ru rw m*位4DIR:方向(Direction)0:计数器向上计数:1:计数器向卜计数c注:当计数君配迸为中央对齐模式或编码赭模式时.该位为只或.位0CEN:使能计数器0:禁止计数器:1:使能计数器。注:在软件设置了CEN位后.外祁时钟.门控模式和绸码器模氏才能工作。辿发模式可以H动 地通过硬件设迓CEN位。在单脉冲模式卜;当发生更新事件时.CENf&h动清除。位 9:8 CKD:时钟分频(Clock division)此位域指示定时器时钟(CK.INT)频率与数字濾波器所使用的采样时钟(ETR、Tlx之间的分频比.00: tDTS = tciciv
10、r?01: tDTS = 2 X tCJCINT?10: tDTS = 4 X tdCINT? 11:保留最后再来看看捕获/比较寄存器1: TIMx.CCRl,该寄存器用来存储捕获发生时,TIMx.CNT 的值,我们从TIMx_CCRl就可以读出通道1捕获发生时刻的TIMx_CNT值,通过两次捕获(-次 上升沿捕获,次下降沿捕获的差值,就可以计算出高电平脉冲的宽度(注意,对于脉宽人长 的情况,还要计算定时器溢出的次数)。=输入捕获库函数配置:1)开启TIM5时钟,配置PA0为复用功能(AF2),并开启下拉电阻。妥使用TIM5,我们必须先开启TIM5的时钟。同时我们妥捕获TIM5_CH1上而的高
11、电平脉宽, 所以先配置PA0为带下拉的复用功能,同时,为了让PA0的复用功能选择连接到TIM5.所以设 置PA0的复用功能为AF2,即连接到TIM5上面。开启IM5时钟的方法为:RCC_APBlPeriphClockCmd(RCC_APBlPeriph_TIM5,ENABLE);PAO/WKUP(PAO)I/O FTUSART2_CTS/UART4_TX/ETH_MII_CRS/_JTIMm_ETR/TIM5_C: !/ TIM8_ETR/EVENTOUTADC123 IN0/WKUP(4TIM.OCIPolarityConfig(TIM5, TIM.ICPolarity.Rising);/溢出时间总和/得到总的高电平时间temp=TIM5CHl_CAPTURE_STA&0X3F; temp*=OXFFFFFFFF;temp+=TIM5CHl_CAPTURE_VAL;printf CzHIGH:%lld usrn, temp); /打印总的高点平时间 TIM5CH1_CAPTURE_STA=O;/开启下次捕
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论