打印

香呼叫主,求救信号,有关pwm输入捕获的问题!

[复制链接]
2168|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zuan520|  楼主 | 2010-11-3 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的配置如下,但是我用信号发生器产生信号输入,根本就不进中断,但是我要是直接用导线给输入引脚引入高电平(相当于一个脉冲信号),就可以进中断,下面是我的程序,实在不明白原因!int void  void ICapture_Configuration(void)
{
      TIM_ICInitTypeDef  TIM_ICInitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
        // TIM3 clock enable
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);  //使能时钟TIM3,AFIO和引脚已经使能过了
        GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);        //重映射
      
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                        //TIM3 CH1  重映射功能
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

  TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
  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_TI1FP1);

  /* 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_IRQHandler(void)
{
  /* Clear TIM3 Capture compare interrupt pending bit */
  TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);

  /* Get the Input Capture value */
  IC2Value = TIM_GetCapture2(TIM3);

  if (IC2Value != 0)
  {
    /* Duty cycle computation */
    DutyCycle = (TIM_GetCapture1(TIM3) * 100) / IC2Value;

    /* Frequency computation */
    Frequency = SystemCoreClock / IC2Value;
  }
  else
  {
    DutyCycle = 0;
    Frequency = 0;
  }
}

并且弱弱的问一句TIM_TS_TI1FP1这个出发源是选择捕获通道1的时候就选择这个触发源吗?
沙发
zuan520|  楼主 | 2010-11-3 14:22 | 只看该作者
唉,香主睡着了,可能是最近比较累,自己先顶一个

使用特权

评论回复
板凳
zuan520|  楼主 | 2010-11-4 10:42 | 只看该作者
哦  解决了!上面的程序是对的,留给大家参考把,但是这句IC2Value = TIM_GetCapture2(TIM3);
和DutyCycle = (TIM_GetCapture1(TIM3) * 100) / IC2Value;
写反了,不能误导大家,最低检测频率是1098Hz,以后会长发帖的!

使用特权

评论回复
地板
zuan520|  楼主 | 2010-11-4 10:42 | 只看该作者
哦  解决了!上面的程序是对的,留给大家参考把,但是这句IC2Value = TIM_GetCapture2(TIM3);
和DutyCycle = (TIM_GetCapture1(TIM3) * 100) / IC2Value;
写反了,不能误导大家,最低检测频率是1098Hz,以后会长发帖的!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

16

帖子

1

粉丝