野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10566|回复: 13

关于定时器输入捕捉的中断程序

[复制链接]
发表于 2015-12-18 08:58:32 | 显示全部楼层 |阅读模式
本帖最后由 自动铅笔 于 2015-12-18 09:35 编辑

void TIM3_IRQHandler(void)
{
  /* Clear TIM3 Capture compare interrupt pending bit */
  TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);  
  /* Get the Input Capture value */
  IC2Value = TIM_GetCapture2(TIM3);  //Gets the TIM3 Input Capture 2 value
  if (IC2Value != 0)
  {
    /* Duty cycle computation */
    DutyCycle = (TIM_GetCapture1(TIM3) * 100) / IC2Value;
    /* Frequency computation */
    Frequency = 72000000 / IC2Value;
  }
  else
  {
    DutyCycle = 0;
    Frequency = 0;
  }
}
请问:
(1)用的是TIM3的通道2作输入捕捉,可计算占空比时,为什么是红色的语句啊?PWM输入捕捉模式下,IC1里是周期,IC2里是脉宽啊?可结果又是对的。
(2)为什么用通道2可以,改成通道1就不行了呢?
(3)定时器的从模式和主模式是什么啊?
回复

使用道具 举报

发表于 2015-12-18 09:41:43 | 显示全部楼层
贴上配置部分的代码吧,通道1通道2怎么设置的,光是中断代码怎么判断啊~
跟捕捉上升沿下降沿有关
回复 支持 反对

使用道具 举报

发表于 2015-12-18 10:11:00 | 显示全部楼层
1.    /* Frequency computation */
    Frequency = 72000000 / IC2Value;

程序用通道2计算频率,这与你说的IC1计算周期不符合吧
3.定时器主从模式用于两个定时器同步使用,主模式可以控制从模式定时器复位,启动,停止等等,还可以作为从模式的预分频器,就是为它提供时钟源
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-18 10:13:30 | 显示全部楼层
yinhao 发表于 2015-12-18 09:41
贴上配置部分的代码吧,通道1通道2怎么设置的,光是中断代码怎么判断啊~
跟捕捉上升沿下降沿有关

void RCC_Config(void)
{
    SystemInit();

  /* TIM3 clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

  /* GPIOA clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
}

void TIM3_Mode_Config(void)
{
  TIM_ICInitTypeDef  TIM_ICInitStructure;         
  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;
  TIM_ICInitStructure.TIM_ICFilter = 0x0;
  TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);

  /* Select the TIM3 Input Trigger: TI2FP2 */
  TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);

  /* Select the slave Mode: Reset Mode */
  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);                                                 
  /* Enable the Master/Slave Mode */
  TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);  

  /* TIM enable counter */
  TIM_Cmd(TIM3, ENABLE);

  /* Enable the CC2 Interrupt Request */
  TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE);  


void TIM3_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  /* TIM3 channel 2 pin (PA.07) configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOA, &GPIO_InitStructure);
}



void TIM3_PWM_Init(void)
{
        RCC_Config();
        TIM3_GPIO_Config();
        TIM3_Mode_Config();       
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-18 10:26:37 | 显示全部楼层
亽亼 发表于 2015-12-18 10:11
1.    /* Frequency computation */
    Frequency = 72000000 / IC2Value;
程序用通道2计算频率,这与你 ...

不会发图片,在玩转儿STM32-V2第P229页图13-4
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-18 10:32:27 | 显示全部楼层
哪里有定时器用于PWM输入捕获的功能框图就好了。看了好几天了,还是懵懵懂懂的。
回复 支持 反对

使用道具 举报

发表于 2015-12-18 10:39:04 | 显示全部楼层
功能框图肯定看stm32中文技术手册啦
QQ截图20151218103754.png


回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-18 10:47:32 | 显示全部楼层
亽亼 发表于 2015-12-18 10:39
功能框图肯定看stm32中文技术手册啦

对呀,就是这个图,IC1捕获的是周期,IC2捕获的是脉宽,不明白为啥占空比DutyCycle = (TIM_GetCapture1(TIM3) * 100) / IC2Value,这不是比反了么?还是手册上的IC1和IC2写反了?
回复 支持 反对

使用道具 举报

发表于 2015-12-18 11:26:58 | 显示全部楼层
图是这样没错,但你程序要跟图对得上才行啊
回复 支持 反对

使用道具 举报

发表于 2015-12-18 11:55:31 | 显示全部楼层
自动铅笔 发表于 2015-12-18 10:47
对呀,就是这个图,IC1捕获的是周期,IC2捕获的是脉宽,不明白为啥占空比DutyCycle = (TIM_GetCapture1(T ...

明天发布定时器捕获的PDF资料,非常详细,不过是F429的,你可以参考下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-21 07:58:12 | 显示全部楼层
fire 发表于 2015-12-18 11:55
明天发布定时器捕获的PDF资料,非常详细,不过是F429的,你可以参考下

太好了,望眼欲穿的等待ing!
回复 支持 反对

使用道具 举报

发表于 2016-8-1 10:26:14 | 显示全部楼层
自动铅笔 发表于 2015-12-18 10:32
哪里有定时器用于PWM输入捕获的功能框图就好了。看了好几天了,还是懵懵懂懂的。

因为你用的是TIM_Channel_2
回复 支持 反对

使用道具 举报

发表于 2016-8-1 10:27:40 | 显示全部楼层
我现在是做PWM输入捕获时,定时器会自己停止。
回复 支持 反对

使用道具 举报

发表于 2016-8-1 17:17:45 | 显示全部楼层
哥们,我的代码跟你的一样,输出到上位机,和示波器的参数比较怎么不一样,苦恼死了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-28 18:47 , Processed in 0.042642 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表