关于定时器的输入捕获,TIM1的一通道进行捕获,TIM4的一通道输出PWM波

2019-07-21 00:20发布

这样配置为什么进不了中断呢?PWM输出正常,求解救啊,纠结好几天了。
void TIM_Configuration(void)
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseInitStruct;
    TIM_ICInitTypeDef  TIM_ICInitStruct;
    
    TIM_TimeBaseInitStruct.TIM_ClockDivision=0;
    TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
    TIM_TimeBaseInitStruct.TIM_Period=65535;
    TIM_TimeBaseInitStruct.TIM_Prescaler=8400-1;
    TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;
    TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStruct);
    
    TIM_ICInitStruct.TIM_Channel=TIM_Channel_1;
    TIM_ICInitStruct.TIM_ICFilter=0;
    TIM_ICInitStruct.TIM_ICPolarity=TIM_ICPolarity_Rising;
    TIM_ICInitStruct.TIM_ICPrescaler=0;
    TIM_ICInitStruct.TIM_ICSelection=TIM_ICSelection_DirectTI;
    TIM_ICInit(TIM1,&TIM_ICInitStruct);
    
    TIM_ClearFlag(TIM1,TIM_IT_CC1);
    TIM_ITConfig(TIM1,TIM_IT_CC1,ENABLE);
    TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);
    TIM_PWMIConfig(TIM1,&TIM_ICInitStruct);
    TIM_SelectInputTrigger(TIM1, TIM_TS_TI1FP1);
    TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Reset);
    TIM_SelectMasterSlaveMode(TIM1,TIM_MasterSlaveMode_Enable);
    TIM_Cmd(TIM1,ENABLE);   
}
中断函数
void TIM1_IRQn(void)
{   

TIM_ICInitTypeDef  TIM_ICInitStructure;
   GPIO_SetBits(GPIOA,GPIO_Pin_5);
  if(TIM_GetITStatus(TIM1, TIM_IT_CC1) == SET)
  {
      
     TIM_ClearITPendingBit(TIM1,TIM_IT_CC1);
     if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)==SET)//当前为上升沿 改下次触发为下降沿
     {
        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;
        TIM_ICInit(TIM1, &TIM_ICInitStructure);
        TIM1CH1_U_CAPTURE_VAL= TIM1->CCR1;
     }  
     else
     {
        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
        TIM_ICInit(TIM1, &TIM_ICInitStructure);
        TIM1CH1_D_CAPTURE_VAL= TIM1->CCR1;
     }         
    if(TIM1CH1_D_CAPTURE_VAL>TIM1CH1_U_CAPTURE_VAL)
    {
        TIM1CH1_CAPTURE_VAL=TIM1CH1_D_CAPTURE_VAL-TIM1CH1_U_CAPTURE_VAL;
    }
    else
    {
        TIM1CH1_CAPTURE_VAL=0XFFFF-TIM1CH1_U_CAPTURE_VAL+TIM1CH1_D_CAPTURE_VAL;
    }
   }
 }


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
x1213378204
1楼-- · 2019-07-22 11:58
我用的也是F411的板子,有个例程在我的帖子里,你可以看看,不过TIM1的输入捕获还没搞定
x1213378204
2楼-- · 2019-07-22 16:41
http://www.openedv.com/thread-66113-1-1.html
搞定TIM1的输入捕获了,可以参考

一周热门 更多>