关于stm32f334的正交编码
stm32f334的正交编码是只有tim2和tim3有正交编码功能吗?其他的定时器不行吗?有用库函数实现正交编码功能的代码能给分享一下吗。。还处在库函数的阶段。。。高级定时器都有正交编码功能,可参考F0xx或F1xx的库 /* 配置定时器处于编码器模式 */
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); 正交编码实在厉害,误差基本为零了 sting 发表于 2015-7-29 08:02
高级定时器都有正交编码功能,可参考F0xx或F1xx的库
~~谢谢~~ yanhaijian 发表于 2015-7-29 08:14
/* 配置定时器处于编码器模式 */
TIM_DeInit(TIM3);
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
~非常感谢~中断服务程序需要做什么吗? 夏明smile 发表于 2015-7-29 11:49
正交编码实在厉害,误差基本为零了
看了些开发板的资料,好像没讲过这方面的,过来请教下大神 我也只是听说,也没用过 我也在研究,哈哈 小蚂蚁快溜跑 发表于 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++;
}
}