关于CH32V307VC的AB相编码器配置问题!!!

---PC6接A相  PC7接B相


---目前遇到的问题是,无论编码器正转还是反转,计数值都是从65535向下计数!!!


下面是配置代码,(RCC使能已开)

// TIM8 Encoder  PC6 AND PC7

    TIM_TimeBaseStructInit(&TIM_TimeBaseInitStructure);

    TIM_TimeBaseInitStructure.TIM_Period = 0xFFFF;

    TIM_TimeBaseInitStructure.TIM_Prescaler = 1;

    TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;

    TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;

    TIM_TimeBaseInitStructure.TIM_RepetitionCounter =  0x00;

    TIM_TimeBaseInit(TIM8, &TIM_TimeBaseInitStructure);


    TIM_EncoderInterfaceConfig(TIM8, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);


    TIM_ICStructInit(&TIM_ICInitStructure);

    TIM_ICInitStructure.TIM_Channel = TIM_Channel_1 | TIM_Channel_2;

    TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;

    TIM_ICInitStructure.TIM_ICFilter = 0; // 滤波

    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

    TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

    TIM_ICInit(TIM8, &TIM_ICInitStructure);

/*

    TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;

    TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;

    TIM_ICInitStructure.TIM_ICFilter = 0; // 滤波

    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

    TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

    TIM_ICInit(TIM8, &TIM_ICInitStructure);

*/

    TIM_ClearFlag(TIM8, TIM_FLAG_Update);        //清除TIM更新标志位

    TIM_ITConfig(TIM8, TIM_IT_Update, ENABLE);   //使能开启TIM中断

    TIM_SetCounter(TIM8, 0);

    TIM_Cmd(TIM8, ENABLE);


使用的编码器如下:

微信图片_20230731154414.jpg

你好,附件为编码器例程,可参考下,如测试有问题建议检查下硬件。

icon_rar.gifCH32V307 电机测速-AB编码器.zip



只有登录才能回复,可以选择微信账号登录