stm32 编码器,电机一直正反转,计数不正确

2019-03-23 19:14发布

电机一直工作在正反转状态,时间稍微长点就能看出来,编码器计数和电机的位置错位了,应该是在正反转的时候,一个方向减计数比另一个方向加计数多了。这是什么问题,软件还是硬件,求大神出马 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
mjfmjj
2019-03-24 00:37
/

额   编码器接口没配置,直接初始化了,,, 下面是初始化函数
void Encoder_Configuration(void)
{
 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
 TIM_ICInitTypeDef TIM_ICInitStructure;

 


 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

 

 

 TIM_DeInit(TIM1);
 TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);

 


 TIM_TimeBaseStructure.TIM_Prescaler = 1; // No prescaling
 TIM_TimeBaseStructure.TIM_Period = 65535;
 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
 TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
 
 TIM_EncoderInterfaceConfig(TIM1, TIM_EncoderMode_TI2,
                              TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
 TIM_ICStructInit(&TIM_ICInitStructure);
 TIM_ICInitStructure.TIM_ICFilter =6   ;//;TIM_ICFilter_Mask  6

 TIM_ICInit(TIM1, &TIM_ICInitStructure);
 
 // Clear all pending interrupts
 TIM_ClearFlag(TIM1, TIM_FLAG_Update);
 TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);
 //Reset counter
 TIM1->CNT = T1_Register_val;
 
 TIM_Cmd(TIM1, ENABLE);
}

一周热门 更多>