STM32利用捕获功能完成脉冲宽度测量解析.pptVIP

STM32利用捕获功能完成脉冲宽度测量解析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
捕获原理 t1-t2 时间就是我们需要测量的高电平时间,假如定时器工作在向上计数模式,测量方法是:首先设置定时器通道 x 为上升沿捕获,这样在 t1 时刻,就会捕获到当前的 CNT 值,然后立即清零 CNT,并设置通道 x 为下降沿捕获,这样到 t2 时刻,又会发生捕获事件,得到此时的 CNT 值记为 CCRx2。根据定时器的计数频率,我们就可以算出 t1-t2 的时间 如果使用TIM5和PA0作为捕获引脚 (7)使能定时器 前面几个步骤已经将定时器输入捕获配置好,但还不能正常使用,只有开启定时器了才能让它正常工作,开启定时器的库函数如下: void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState); 使能TIM5的函数是 TIM_Cmd(TIM5,ENABLE); //开启定时器 捕获程序 需要区分是捕获中断还是定时器更新中断 设置全局变量记录捕获状态和定时器更新次数 在捕获到高电平后要改变捕获极性为低电平捕获 如何更新中断发生次数超过记录极限,强制设置捕获完成状态 利用捕获功能完成脉冲宽带测量 Stm32定时器应用 简介 在定时器中我们介绍了通用定时器具有多种功能,输入捕获就是其中一种。STM32F1 除了基本定时器 TIM6 和 TIM7,其他定时器都具有输入捕获功能。输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,通常用于测量输入信号的脉宽、测量 PWM 输入信号的频率及占空比。 简介 输入捕获的工作原理比较简单,在输入捕获模式下,当相应的 ICx 信号检测到跳变沿后,将使用捕获/比较寄存器(TIMx_CCRx)来锁存计数器的值。从而完成一次捕获。同时还可以配置捕获时是否触发中断/DMA 等。 输入捕获配置步骤 (1)使能定时器及端口时钟,并设置引脚模式等。 因为输入捕获也是通用定时器的一个功能,所以需要使能相应定时器时钟。由于输入捕获通道是对应着 STM32F1 芯片的 IO 口,所以需要使能对应的端口时钟,并将对应 IO 口设置为输入模式功能。 如果使用TIM5和PA0作为捕获引脚 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);//使能 TIM5 时 钟而 TIM5 的 CH1 通道对应的管脚是 PA0 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//管脚设置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//设置下拉输入模式 GPIO_Init(GPIOA,GPIO_InitStructure); //初始化结构体 如果使用TIM5和PA0作为捕获引脚 (2)初始化定时器参数,包含自动重装值,分频系数,计数方式等 要使用定时器功能,必须对定时器内相关参数初始化,其库函数如下: voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct); (3)设置通用定时器的输入捕获参数,开启输入捕获功能 初始化定时器后,需要设置对应输入捕获通道参数,比如输入通道、滤波、分频系数、映射关系、捕获极性等。输入捕获参数初始化函数如下: void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct); 如果使用TIM5和PA0作为捕获引脚 如果我们需要配置 TIM5 的通道 1 为输入捕获功能,并且为上升沿捕获、不分频、直接映射到 TI,可以如下配置: TIM_ICInitTypeDef TIM_ICInitStructure; TIM_ICInitStructure.TIM_Channel=TIM_Channel_1; //通道 1 TIM_ICInitStructure.TIM_ICFilter=0x00; //滤波 TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;//捕获极性 TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1; //分频系数 TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;//直接映射到 TI1 TIM_ICInit(TIM5,TIM_ICInitStructure); 如果使用TIM5和PA0作为捕获引脚 (4)开启捕获和定时器溢出(更新)中断 假如我们需要检测输入信号的高电平脉宽,就需要在第一次上升沿到来时捕获一次,然后设置为下降沿捕

文档评论(0)

Epiphany + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档