小蚂蚁快溜跑 发表于 2015-7-28 20:09:17

关于stm32f334的正交编码

stm32f334的正交编码是只有tim2和tim3有正交编码功能吗?其他的定时器不行吗?有用库函数实现正交编码功能的代码能给分享一下吗。。还处在库函数的阶段。。。

sting 发表于 2015-7-29 08:02:03

高级定时器都有正交编码功能,可参考F0xx或F1xx的库

yanhaijian 发表于 2015-7-29 08:14:23

        /* 配置定时器处于编码器模式 */
        TIM_DeInit(TIM3);
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);

        TIM_TimeBaseStructure.TIM_Prescaler = 0x0;
        TIM_TimeBaseStructure.TIM_Period = 65535 - 1;
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

        TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI1,TIM_ICPolarity_Falling, TIM_ICPolarity_Falling);
        TIM_ICStructInit(&TIM_ICInitStructure);
        TIM_ICInitStructure.TIM_ICFilter = 15;
        TIM_ICInit(TIM3, &TIM_ICInitStructure);

        // 清除所有未决中断
        TIM_ClearFlag(TIM3, TIM_FLAG_Update);
        TIM_ITConfig(TIM3, TIM_IT_Update, DISABLE);

        TIM3->SR = 0xfffe;
        TIM_Cmd(TIM3, ENABLE);   

夏明smile 发表于 2015-7-29 11:49:21

正交编码实在厉害,误差基本为零了

小蚂蚁快溜跑 发表于 2015-7-29 14:29:41

sting 发表于 2015-7-29 08:02
高级定时器都有正交编码功能,可参考F0xx或F1xx的库

~~谢谢~~

小蚂蚁快溜跑 发表于 2015-7-29 14:31:16

yanhaijian 发表于 2015-7-29 08:14
/* 配置定时器处于编码器模式 */
        TIM_DeInit(TIM3);
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);


~非常感谢~中断服务程序需要做什么吗?

小蚂蚁快溜跑 发表于 2015-7-29 14:32:16

夏明smile 发表于 2015-7-29 11:49
正交编码实在厉害,误差基本为零了

看了些开发板的资料,好像没讲过这方面的,过来请教下大神

夏明smile 发表于 2015-7-29 19:44:42

我也只是听说,也没用过

54chenjq 发表于 2015-7-29 21:00:53

我也在研究,哈哈

yanhaijian 发表于 2015-7-30 08:34:30

小蚂蚁快溜跑 发表于 2015-7-29 14:31
~非常感谢~中断服务程序需要做什么吗?

void TIM3_IRQHandler(void)
{
    /* Clear the interrupt pending flag */   
    ENCODER_TIMER->SR = 0xfffe;
    if ( (ENCODER_TIMER->CR1 & TIM_CounterMode_Down) == TIM_CounterMode_Down)
    {         
      Encoder--;
    }
    else
    {   
      Encoder++;         
    }      
}
页: [1] 2 3
查看完整版本: 关于stm32f334的正交编码