实验九 输入捕获实验_第1页
实验九 输入捕获实验_第2页
实验九 输入捕获实验_第3页
实验九 输入捕获实验_第4页
实验九 输入捕获实验_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 0河由,求七琴微控制器综合设计与实训实验名称:实验九输入捕获实验 实验九:输入捕获实验实训任务配置定时器通道IO口输入捕获模式;利用定时器的输入捕获功能测量方波周期或高电平宽度。11实验说明输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32的定时器,除了TIM6和TIM7,其他定时器都有输入捕获功能。STM32的输入捕获,简单的说就是通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。同时还可以配置捕获时是否触发中断/DMA等。本实验使用TI

2、M5_CH1来捕获高电平脉宽,也就是要先设置输入捕获为上升沿检测,记录发生上升沿的时候TIM5_CNT的值。然后配置捕获信号为下降沿捕获,当下降沿到来时,发生捕获,并记录此时的TIM5_CNT值。这样,前后两次TIM5_CNT之差,就是高电平的脉宽,同时TIM5的计数频率是已知的,从而可以计算出高电平脉宽的准确时间。本实验目的是通过输入捕获,来获取TIM5_CH1(PAO)上面的高电平脉冲宽度,并从串口打印捕获结果。12实验步骤在实训平台上将PE5连接LED灯;复制上一个实验工程修改名称并保存为输入捕获实验;在PWM实验timer.c文件的基础上,添加两个函数:定时器通道输入捕获配置和定时器中

3、断服务程序。编写main()函数,程序编译正确;下载程序,打开串口调试助手观察捕获到的值。程序设计(1)编写timer.c文件。打开timer.c文件,在文件最下方接着编写。开启TIM5时钟和GPIOA时钟,配置PA0为下拉输出要使用TIM5,必须先开启TIM5的时钟。这里还要配置PA0为下拉输出,因为要捕获TIM5_CH1上面的高电平脉宽,而TIM5_CH1是连接在PA0上面的,还有对GPIOA的初始化。RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);/使能TIM5时钟RCC_APB2PeriphClockCmd(RCC_APB2Peri

4、ph_GPIOA,ENABLE);/使能GPIOA时钟初始化TIM5,设置TIM5的ARR和PSC开启TIM5的时钟之后,需要设置ARR和PSC两个寄存器的值来设置输入捕获的自动重装载值和计数频率。库函数中是通过TIM_TimeBaseInit函数实现的。设置TIM5的输入比较参数,开启输入捕获输入比较参数的设置包括映射关系、滤波、分频以及捕获方式等。这里需要设置通道1为输入模式,且IC映射到TI1(通道1)上面,并且不使用滤波(提高响应速度)器,上升沿捕获。库函数是通过TIM_ICInit函数来初始化输入比较参数的:voidTIM_ICInit(TIM_TypeDef*TIMx,TIM_IC

5、InitTypeDef*TIM_ICInitStruct);使能捕获和更新中断(设置TIM5的DIER寄存器)因为要捕获的是高电平信号的脉宽,所以,第一次捕获是上升沿,第二次捕获时下降沿,必须在捕获上升沿之后,设置捕获边沿为下降沿,同时,如果脉宽比较长,那么定时器就会溢出,对溢出必须做处理,否则结果就不准确。这两件事,都在中断里面进行,所以必须开启捕获中断和更新中断。定时器的开中断函数TIM_ITConfig即可使能捕获和更新中断:TIM_ITConfig(TIM5,TIM_IT_UpdatelTIM_IT_CC1,ENABLE);/允许更新中断和捕获中断e.设置中断分组,编写中断服务函数编写

6、NVIC_Init()函数。然后,使能TIM5,就可以开始输入捕获。此时程序voidTIM5_Ca.p_Inic(ulbarrjUlbpac1(IO_Ia.lcTypereI詐cure;沁Iil让TgeDefIIK_TiBE3a3eStractuieiMV1匸JfTJT.2IEHESE-Euezure;RCC_APaiFeriphClQcKmd(RIXAPB1Pcriph_TIMSFNABU;/ffiBriMSlfWFerlphClocJcCKd|CjiPhlPeriphjFrDA,.ZllStBLE);垃碇GF爭ePTD_lEi-icSEFueTu:r&.GPIO_Pln=GPID_Pln_

7、O;/PM:-滑竦之矿盘1置SJIInLcScnjcture.GFl-&_Mcde=D;浊黑入3IlD_ReseLBlca|SPLQA.ZGPIO_Pi_d;GSIcTlnit(iGPIQ_rnitStrg.ctur;HVTr_l!il!:SEruct口昨風叮匸110勿孔!mm丄=/.TlHa+SlTVTC_rn让ructuire1,IIVTC_TR.QC加皿MFmejnptLGmHLCTity天占优先点M级阿匸轟让黑mEgxNVTi:lRQCM阿已134班1让丫o:7/MfcdfiZe)!-RESET)11(TIH5CHl_CAPTURE_STAi己迓摘茯寻丟电=_-11(rLM5Cfii_

8、CAPTURE_5TA&K3F)=X7F/电平丸圧丁TlM5Ca_CAPTUEl_5lA.|=X.;.行芒立工4址二=;.FTIJt$CHi_CAPTUS_VfkL=Xj?rf;)eleTIM5H1_CAPTURE_5TA+-;ifTIK_GetITStatU3(TIM5,TIM_IT_CC1)RESET理药一发生建拄爭哼工(TIMSCH1_CAPTURE_STAjXj)/掏获个下降洁TIMSCHl_CAPTURE_STi1=jXE:;环二惑功持获聖丈上升帛TTM5匚Ei:【CAPTnREVAL=TI?4_2etUmptii=eiTIHS)iTZMOCIPOlarlti-CDnfig7TIM5

9、,TTHTCPClazitVRiflingf;:-L?=一?直方二.匸rM7秦I、)el打还未开始一蝇一次捕袂上弄厝TIN5CH1CAPTURESTAj;肓空TIES盘ETITREVAL-Ci:TIHSetCounxer(TIM5#0;TIH5匚且丄_匚APTURE_STA-:-X1Q:/标t己捕获主了上升;TlM_ociPolari&ycanf(TIMST1M_I匚丄电工iry_F理rnng);/cci?=l设豊为下廖孑弓持获TIH_ClearITPendingBic(TIMS,TIM_IT_CCl|TIH_IT_Updflte|:清專半新标忘住图10.3中断服务函数通过以上步骤,定时器5的

10、通道1就可以开始输入捕获了。(2)编写timer.h文件。在原来文件的基础上加入TIM5_Cap_Init的声明。*ifndef_TIMER_HtdefineTIKEbZh+includerf75.r.vcidTIM3_EWK_Jrit(ularrulesc;ireTIM5_Cat_Inic(ulpjc)rfendif图10.4timer.h文件(3)编写main()函数。main函数是在PWM实验的基础上修改来的,保留了PWM输出,同时通过设置TIM5_Cap_Init(0XFFFF,72-1),将TIM5_CH1的捕获计数器设计为1us计数一次,并设置重装载值为最大,所以捕获时间精度为1u

11、s。主函数通过TIM5CH1_CAPTURE_STA的第7位,来判断有没有成功捕获到一次高电平,如果成功捕获,则将高电平时间通过串口输出到电脑。,_3.tiiidudeincludetxcludetlncluefz-Lcludeled.hdelayskyBhff*375thnauaart.rh*上3.EZT亠?8910、11L2H尹倚霜u8TIM5CE31_FmE_5n;f迷人福密代态eteulTIH5CHl_3;iFT:CJEE_,YALj.劭人菊荻值z.Btmam(Taid)u32tezf=_;delay_imt|);廷时函敎和始比KVIC_PrinlityGrotipCnnfijNVTC

12、PricrityGrDiip_2;设置MVIU申斷分粗2:2也枪占优先SL2也肩应优光蠶U註匸二诅巩-甕训:/*LEDIniC(JjLED瑞口朝雄乂TIM3_Pm_Init(5S5-,0);不甘频弋FWM频罢T2003(8SS+丄帥壬律TIMSapJmt(GXFFFF,;攻世g的兹盍计數While(1TIH_SetCampare2(TIH3?TIHGetCaptuze2(TIH3)+1J;if(TIH_GetCapttare2(ILM33:)TIM_5etCcanpaifi2|TLM3F:);if(TlMSCHiCAPTURESTJUOXM)成功捕肢到了一这上升祖i;en=TrM5CHl_Af

13、Timi;STAA喜盯:temp*65531;/J6出时闻总和temp4=TIM5CBCAfTOMJAL;-握到总的展电平时I可pnncfIHIGH;%dusrhFtemp);/打印总的高点平片间TIH5CHLCAPTUREST干宕下一讥摘芸图10.5主函数硬件原理图设计LEDVCC3V3图10.1LED1与PE5连接总结由于缺少硬件设施,无法进行捕获实验的仿真图片展示。实验心得:通过这次实验,我了解了如何捕获PWM方波信号的脉宽。明白了输入捕获与输出比较的区别。掌握了PWM输入捕获测量脉冲的最小和最大频率计算方法。1、输入捕获模式可以用来测量脉冲宽度或者测量频率STM32的输入捕获,就是通过

14、检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)时,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。同时还可以配置捕获时的触发中断/DMA等。2、定时器PWM输入捕获测量脉冲的最小和最大频率计算公式:PWM输入捕获能捕获的最小频率为:72MHZ/(ARR+1)*(PSC+1)=1HZPWM输入捕获能捕获的最大频率为:72MHZ/(PSC+1)=1MHZ3、PWM输入捕获配置流程:(1)开启TIMX时钟和GPIOX时钟,设置PXX输入模式(2)初始化TIMX,设置TIMX的ARR和PSC(3)设置TIMX的输入比较参数,开启输入捕获(4)使能捕获和更新中断(设置TIMX的DIER寄存器)(5)设置中断分组,编写中断服务函数(6)使能定时器(设置TIMX的CR1寄存器)提出的问题:输入捕获和输出比较的区别?解释:输入捕获:如具有此功

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论