请问原子哥,STM32F407IGT6 TIM5_ETR引脚,可以作为外部计数吗?

2019-07-20 10:59发布

芯片有TIM5_CH1_ETR 360截图20171106101333170.jpg 调试了很久不能成功计数,是我的初始化有问题吗?还是获取计数值得方式不对?下面为初始化代码和读取函数:

    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
               
/*输入管脚*/               
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH, ENABLE);
    GPIO_PinAFConfig(GPIOH, GPIO_PinSource10, GPIO_AF_TIM5);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
                GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_Init(GPIOH, &GPIO_InitStructure);
       
/*计数器*/
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
    TIM_DeInit(TIM5);
    TIM_TimeBaseStructure.TIM_Period = 0xFFFFFFFF;
    TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; /*定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)
                                                                            使用的采样频率之间的分频比为1*/
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit( TIM5, &TIM_TimeBaseStructure); // Time base configuration   
    TIM_TIxExternalClockConfig(TIM5, TIM_TIxExternalCLK1Source_TI2, TIM_ICPolarity_Rising, 0);//TIM5 的chanl2 做外部时钟的输入管脚。
     //TIM5 的ETR管脚做外部时钟的输入管脚用这种模式
    TIM_ETRClockMode2Config(TIM5, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
    TIM_Cmd(TIM5, ENABLE);
                TIM_SetCounter(TIM5, 0);   // 清零计数器CNT       
//        TIM_Cmd(TIM5, DISABLE);

  获取脉冲个数
  SPEED4 = TIM5->CNT;       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
天道酬勤8988
2019-07-20 17:52
Bigflish 发表于 2017-11-6 21:47
附件的图片是从F4的《中文参考手册》上截的图,外部触发输入只使用与TIM2.3.4,并不使用于TIM5 ...

现在电路接口已经设计好了,tim2.3.4的etr接口已经用了,只能使用ph10这个端口,请问你说的方式2是使用tim5?我是想用tim5的etr功能采集电机脉冲,etr模式不占用CPU,还有一种方式是使用ph10的外部中断采集,这样一直中断占用CPU,请问根据我的需求您有好的方式推荐吗?

一周热门 更多>