stm32PWM输入捕获..docxVIP

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
stm32PWM输入捕获.

stm32 定时器pwm输入捕获输入捕捉的功能是记录下要捕捉的边沿出现的时刻,如果你仅仅捕捉下降沿,那么两次捕捉的差表示输入信号的周期,即两次下降沿之间的时间。如果要测量低电平的宽度,你应该在捕捉到下降沿的中断处理中把捕捉边沿改变为上升沿,然后把两次捕捉的数值相减就得到了需要测量的低电平宽度。如果要的测量低电平太窄,中断中来不及改变捕捉方向时,或不想在中断中改变捕捉方向,则需要使用PWM输入模式,或使用两个TIMx通道,一个通道捕捉下降沿,另一个通道捕捉上升沿,然后对两次捕捉的数值相减。PWM输入模式也是需要用到两个通道。使用两个通道时,最好使用通道1和通道2,或通道3和通道4,这样上述功能只需要使用一个I/O管脚,详细请看STM32技术参考手册中的TIMx框图。//0-----------------------一、概念理解PWM输入捕获模式是输入捕获模式的特例,自己理解如下1.?每个定时器有四个输入捕获通道IC1、IC2、IC3、IC4。且IC1IC2一组,IC3 IC4一组。并且可是设置管脚和寄存器的对应关系。2.?同一个TIx输入映射了两个ICx信号。3.?这两个ICx信号分别在相反的极性边沿有效。4.?两个边沿信号中的一个被选为触发信号,并且从模式控制器被设置成复位模式。5.?当触发信号来临时,被设置成触发输入信号的捕获寄存器,捕获“一个PWM周期(即连续的两个上升沿或下降沿)”,它等于包含TIM时钟周期的个数(即捕获寄存器中捕获的为TIM的计数个数n)。6.?同样另一个捕获通道捕获触发信号和下一个相反极性的边沿信号的计数个数m,即(即高电平的周期或低电平的周期)7.?由此可以计算出PWM的时钟周期和占空比了????frequency=f(TIM时钟频率)/n。????duty cycle=(高电平计数个数/n),????若m为高电平计数个数,则duty cycle=m/n????若m为低电平计数个数,则duty cycle=(n-m)/n注:因为计数器为16位,所以一个周期最多计数65535个,所以测得的最小频率=TIM时钟频率/65535。二、程序设计与分析1.?程序概述:选择TIM3作为PWM输入捕获。IC2设置为上升沿,并设置为有效的触发输入信号。所以IC2的捕获寄存器捕获PWM周期,???????????????????IC1的捕获寄存器捕获PWM的高电平周期。2.程序代码如下:???RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);??????//时钟配置??RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);???GPIO_InitStructure.GPIO_Pin= GPIO_Pin_7;???????????????????????????????//GPIO配置??PIO_InitStructure.GPIO_Mode= GPIO_Mode_IN_FLOATING;??GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;??GPIO_Init(GPIOA,GPIO_InitStructure);??NVIC_InitStructure.NVIC_IRQChannel= TIM3_IRQn;?????????????????????//NVIC配置???NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;??NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1;??NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;??NVIC_Init(NVIC_InitStructure);??TIM_ICInitStructure.TIM_Channel =TIM_Channel_2;???????????????????//通道选择??TIM_ICInitStructure.TIM_ICPolarity= TIM_ICPolarity_Rising;???????//上升沿触发??TIM_ICInitStructure.TIM_ICSelection= TIM_ICSelection_DirectTI;????//管脚与寄存器对应关系??TIM_ICInitStructure.TIM_ICPrescaler= TIM_ICPSC_DIV1;???????????//输入预分频。意思是控制在多少个输入周期做一次捕获,如果//输入的信号频率没有变,测得的周期也不会变。比如选择4分频,则每四个输入周期才做一次捕获,这样在输入

文档评论(0)

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

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

1亿VIP精品文档

相关文档